How I built my first Android App

Roman Marakulin
7 min readJun 10, 2023

--

App preview

To be really honest, this is not my first app, but it’s the first one, which I want to share with the world.

The app — Take and Learn — is a simple trainer for Spanish conjugations. I’ve written about the app itself in my previous article — The best app for Spanish Conjugations.

Now, I want to focus on the development process itself — from the idea to implementation.

This is not a success story with thousands of customers or millions of dollars of investment. This story is about how almost everyone can create an app for his needs.

Idea

An idea for the app belongs to my wife.

As long as we’re foreigners, who live in Spain, we’re chasing the dream to speak Spanish fluently. Every time, when I touch Spanish tenses and try to learn new ones, I struggle a lot. In English, a verb doesn’t change (in general) according to a pronoun. For I, you, she, they, etc we have the same form of the verb work: worked, whereas in Spanish… take a look yourself (for Pretérito Indefinido):

  1. Yo trabaje (I worked)
  2. Tú trabajaste (You worked)
  3. Élla trabajó (She worked)
  4. Ellos trabajaron (They worked)

And these are even not all pronouns ☺.

In order to remember conjugations (word endings for verbs), for me it’s definitely not enough to complete several exercises from a grammar book.

Some time ago, I used spaleon.com, which is also a Conjugation Trainer. A downside of it is that it has a very limited number of words and tenses, and it isn’t very convenient to use on mobile phones. There are, of course, similar apps for Android or iOS, but I don’t like their complexity or monetization policy. For example, one app has a database with 1000 verbs, but only a quarter is available without payment. Imagine, you should pay for verbs, that are already on your phone, so literally, you pay to switch a boolean of availability flag for these keywords from false to true.

One day, my wife, that also struggles to remember conjugations, came to me and said: “But why not build our own application, that will suit us fully?”. She sowed this idea in me, but only three days later I could answer — let's do this! At first, I was afraid, that I won’t have time for the project — work, and side duties, life in the end, consume too much time.

The truth is that you always find time for things that are fascinating to do. So from there, we’ve started.

Name

As I mentioned before, it wasn’t the first app, that I published on Google Play. The first project was developed on recipe recommendations based on ingredients you like or don’t like and we called it Take and Cook. With this name, we wanted to reflect the simplicity of the app — ease and speed of searching and cooking. In addition, we didn’t want to create a non-existent name — we wanted to be more original than this and have a name as a phrase.

While thinking about the name for the conjugation trainer app, we were trying all possible names without success — either it was too stupid or the name already existed. Suddenly, we remembered the recipe app name and brilliantly decided to inherit the pattern from it, so the current name Take and Learn was born.

P.S. If at some point I create an app, that helps mix cocktails, I will call it Take and Shake without any hesitation.

Technologies

As long as I’ve participated in several hackathons (My experience in participating in Hackathons), I was familiar with Flutter (an open-source framework) and I was impressed by how fast you can create an app using it — any app, for Android or iOS, or even a web. Although I missed some practice with it, I’ve decided to focus on Flutter and learn it deeper. As long as the app is not complex, we shouldn’t have any problem gluing primitives together. Spoiler: to write an app with Flutter you should learn the Dart language. But don’t be scared — the language is relatively easy to pick up.

To gather and prepare data (verbs, conjugations, and translations for them) I used Python, as the fastest solution to make data manipulations.

Verbs with conjugations I extracted from several repositories on Github, as all of them, that I’ve found, contained errors or were incomplete.

In the end, the design was done with Figma, as one of the most popular solutions for designing and prototyping.

Design

My wife took care of this part and I trusted her entirely.

It happened, that I am completely unable to draw and I have problems putting elements on a screen in a way that is convenient for users. Also, my wife is a great photographer, so I gave her the job. Together, we were gathering just to polish small details from time to time.

In order to structure the design a little bit and have it configurable, she created a kit (root elements, that defines styles and forms of the app) and used it, inheriting, for buttons, widgets on all screens.

Some screens from the app

As she shared with me recently, most of the time she spent drawing dogs on buttons for the main menu. Just look at them — they are adorable!

Development

For the first version, we’ve decided to focus on creating only an Android application because, let's face the truth, to publish an app you have to pay:

  1. $25 one-time registration fee — Android
  2. $99 annual fee — iOS

Hence, if you don’t chase a goal to earn money through an app later on, then, a reasonable solution would be to start with Android (you still can install an app on your iPhone for free but with a self-signed certificate you have to reinstall it from time to time).

The first week I spent learning Dart language and Flutter. I used tutorialspoint website and official documentation as a reference and dive deep, but I believe any tutorial does its job. When I felt comfortable with Flutter, I went right away to the development of our app.

As the project is simple and doesn’t have any remote features, it’s reasonable to make it offline with a local database. For this purpose, I chose the widely used sqflite package. Thus, having a local sqlite file alongside an app, you can make queries with a standard SQL.

When we started working on the app, we decided to release it as soon as possible. I wanted to practice conjugations in the end and not wait for the right code structure or make a plan with features and releases in advance. Our goal was simple and we shouldn’t overcomplicate it.

While my wife worked on the design, I dedicated my time to finding the right database, that we could use for conjugations.

Unfortunately, it isn’t as simple as you could imagine — the first one, which I came across was Fred Jehle’s Conjugated Spanish Verb Database and I even started using it, but then, discarded this option, because the database has mistakes. Not all translations are correct and conjugations for the imperative mood are wrong. Furthermore, several commonly used Spanish verbs are missing. You can check the issues tab and see that the project was abandoned, sadly.

All in all, after not finding a single database, that can be used for the app, I’ve decided to use several sources of data — some other databases from GitHub repositories and OmegaWiki. The latter is quite an impressive source of data and can provide not only translations as a single word but also meanings in your language. Besides, I had to create my own engine to define if a verb is regular or irregular.

When I prepared the DB, I was finally ready to start coding the app.

I wouldn’t say, that I faced any issues while building it — everything was quite straightforward, and 90–95% of problems were solved through stackoverflow (the rest of them — by trial and error method).

One caveat, that I want to mention — always remember, that some Android devices have 3 physical buttons at the bottom and one of them is responsible for going back, so your app should work correctly with it as well. For our app, for example, you could abuse the button to go back and answer again, but correctly.

After a month of development (according to a private Github repo), we finally finished the project! and then, no less important work followed.

We spent 2 days afterward just registering a development account and our app on Google Play Console, filling all required sections, and preparing for a release. Indeed, it has countless sections to fill. As a final step, we built a Privacy Policy, a document, that is required to publish in order to upload an app on Google Play.

Epilogue

Currently, we have had our app in Google Play for about one month with 28 active devices (at least Google Play Console says so), that we got from the LinkedIn network and a couple of groups, dedicated to Spanish learners.

Our goal wasn’t to build and promote the app (although, I would enjoy seeing people using it), but to make a tool to boost Spanish.

Most importantly, the app in fact helps me to learn tenses (how — I described in the previous article) and brush them afterward.

With this article, I wanted to show, that creating a simple app is not very hard and costly and with enough patience and effort, you can reach the goal even without having knowledge in mobile development.

As a next milestone for the Take and Learn, I would like to have statistics with prizes for completing training and competitions with other users. Let me know what you think.

--

--

Roman Marakulin
Roman Marakulin

Written by Roman Marakulin

I write about Technologies, Software and my life in Spain

No responses yet