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)
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.
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.
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.
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.
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.
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.
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.