Checklist for a Database Driven Mobile App

What do I need to start building a database driven mobile app? Many aspects are similar to building a web app so I was able to put together a checklist of things to plan out:

1. Design and Storyboard

What will the Keep It 100 app look like? How do users interact with the app? For example when users open the app, the “main view” will contain all recent or featured products listed for sale. If the user clicks on a product it will transition to a “product details view”. Users who want to add a new product will see the “add new product view”. Having everything on a storyboard allows me to visually follow the flow of the app and bring it to life. It is important to have something to reference during the development phase. I will use Figma for designing the user interface and storyboards.

2. Integrated Development Environment (IDE)

In the discussion about native languages and cross-platform frameworks, I decided that Keep It 100 will utilize React Native. The app will be mostly Javascript code, maybe with a touch of native code if necessary. I will need to download both XCode for iOS and Android Studio. Each IDE comes packaged with the required dependencies for building apps on their respective platforms. I have an old early 2015 MacBook running macOS Catalina. It is likely that I will need upgrades to support the latest app development on my computer.

Update April 6, 2024: I bought a brand new MacBook Air and was able to get my local development environment set up for React Native. I am starting with iOS and plan to work on Android later. For code editing and development I use Visual Studio Code.

3. Cloud Hosting and Storage

Data and image assets for Keep It 100 will utilize cloud storage. I have an existing account with Amazon Web Services (AWS) so the app will most likely be utilizing AWS infrastructure. AWS has a wide range of services and everything that I need to host and serve data for the app.

4. Database

Keep It 100 is completely database-driven, so I’ll need a robust backend database system. I did some research and found this article about selecting the right database structure for mobile apps to be the most informative and useful.

NoSQL

The user database will utilize NoSQL, possibly Amazon DynamoDB. The flexible structure of NoSQL will allow me to quickly add user features in the future. In the first iteration of the app, users are linked to chat threads for buyer and seller communication and any products they’ve posted for sale.

Relational Database

Products posted for sale have a set amount of fields and data so it is best served as structured relational data. A relational data schema is also more efficient for product search in the app. I anticipate the data will remain consistent and not have many (if any) schema changes. MySQL is frequently the relational database management system (RDMS) of choice for web apps, so I think it will also serve well for mobile app development. I will use Amazon RDS.

Local Database

The next thing to think about is local data for the app. Do I need a local database storage solution like SQLite? How will this local database synchronize with the cloud hosted database systems? A local database system is handy for offline activity in case network connections fail. If the user is in the process of posting a product and is abruptly cut off, their work is saved locally. When they’re online again, it gets synced with the backend database system. A local database also enhances the user experience. New data (i.e. the next set of products) can be preemptively loaded in the background while the user is browsing so they don’t have to wait once they get to it.

5. Content Delivery Network (CDN)

Items posted for sale will have an image gallery. There will be a limit on how many images per listing but these images will still require a content delivery network (CDN). Every image asset will also need to be cleaned up and optimized for browsing after they’ve been uploaded.

6. Caching and Scaling

As the app gains a wider audience it will most likely need a caching layer so that it doesn’t have to keep hitting the database for the same data repeatedly. Since this is a new project with no traffic this is the lowest priority right now, but I want to remember it for the future. I want to make sure everything is designed to be easily scalable if the need arises.

7. Firebase

Google’s Firebase product encompasses everything I’ve discussed. Firebase is efficient for data storage, synchronization and scaling. Firebase also has a CDN feature for image assets and cloud messaging feature for live chat. It sounds like the ideal system to utilize for a lightweight application. However the article I referenced earlier noted numerous challenges faced by a chat app that chose to use Firebase. So I will need to take a deeper dive into Firebase to figure out if it is plausible for my use case.

Conclusion

Ok I think that is it for now. I have a checklist of things I need to review or complete as I go through the design and development process for Keep It 100. I will keep adding to this list as needed and check back often.