The Development Environment and Language Selection for LangJournal

LangJournal is a smartphone app that instantly corrects diaries written in foreign languages with AI. It’s an app with the concept of “Acquiring language skills through the habit of keeping a diary.”

I am developing it alone, during my spare time and after work. In this article, I will introduce the development environment and programming languages used for LangJournal.

App Development Language: React Native

Reason for Selection

As I am a React Native engineer, I chose to use React Native for this app as well. The greatest appeal of React Native is undoubtedly the ability to implement for both Android and iOS with a single codebase.


Reason for Selection

We use Expo for the development of LangJournal. When starting app development with React Native, one might wonder whether to use Expo. I firmly believe it is a must.

Indeed, until around 2020, there were many features that couldn’t be implemented with Expo, like lacking payment functions or issues with playing YouTube videos. However, now with the current Expo (Version 48), there’s almost nothing you can’t do.

Other advantages of Expo include:

Easy releases… Thanks to a very convenient feature called EAS.
Easy maintenance… Updating Expo also updates other packages.

Admin Panel Development Language: React

Reason for Selection

If you can write in React Native, writing in React comes without much resistance, so choosing React for the admin panel is the safest option. We did the same for LangJournal.

Backend: Firebase + Node.js

Reason for Selection

In LangJournal, we don’t set up AWS servers, install MySQL, etc. Backend functions are consolidated in Firebase.

In personal development, I believe it’s important to minimize the amount of source code. “Working during the day and creating an app in your free time” means it’s better to reduce the amount of source code as much as possible.

Firebase features actually used:

  • Authentication… for login-related functions.
  • Storage… for storing voice data uploaded by users.
  • Analytics… for data analysis.
  • Functions… all backend processes are implemented here.
  • Cloud Firestore… Database (NoSQL).


A concern is that the speed may slow down when the data volume increases with Cloud Firestore.

I have previously participated in a project that used Cloud Firestore for app development. As the scale grew, the speed slowed down. Ultimately, we migrated to an RDB, and after the migration, the speed improved dramatically.

Of course, the speed can be improved even in NoSQL with the right data structure and index settings. So for now, I will proceed as is. However, I am considering migrating from Cloud Firestore to an RDB like MySQL in the future.


If you’re interested in learning foreign languages, please download and try LangJournal.

Leave a Reply

Your email address will not be published. Required fields are marked *