Tuesday, October 22, 2019

Flamingo



Quite a while ago me and Johnny started a project called Flamingo, a very simple vocabulary memorizer, our apps usually have 50 to 100 words, we try to pick the most used words and phrases in each language.
The idea is simple: behind the scenes there is a roster of 10 words from which they are picked randomly, the better you know a word it's less likely to show up, that way words that you have trouble with are more likely to show up, once you answered correctly enough times the word is removed from the roster and the next one comes in.



Technical Stuff

Flamingo went through quite a lot of mutations, starting with Java for Android Native, then to VueJS with Cordova to eventually Svelte which is by far my favorite JavaScript framework to date.
We also automated pretty much anything we could, since all the applications are more or less the same we were able to automate 99% of the process of publishing a new language, besides the actual content (words and phrases) everything else was automated, including:

Our setup had a single git repo for the sources and scripts, and a Google Drive folder for app specific assets (word database, graphics, build files, etc...)

Our Google Drive folder

In order to make a new app we used a grunt script that would do the following:
  • Use SoundOfText to scrape audio files.
  • Generate graphics - icons,store graphics and screenshots.
  • Copy relevant files from our Google Drive folder into the workspace.
  • Configure some variables in the code (app name, adsense ids, etc...)
  • Build app and run some tests.
At this point if everything looked fine we would run another script that would upload and publish the app in the store and voila! we have published a new app!