Build your startup and launch your MVP for FREE using Firebase as the back-end
If you are a first-time founder and coming from a non-technical background, you will face the challenge of setting up your IT infrastructure and how to deploy your app cost-effectively. You will be able to find developers to build your product, but still, you need to have servers and databases to host your application. What is the cheapest way to do this until you get traction and investors to fund your startup?
Let’s take this hypothetical product that you will build is a marketplace app for local organic food vendors to sell their products online. Let’s call it FOODANIC.
Overview of the application
Food vendors can register their shops on Foodanic.com or using the mobile app. There is a one-month free trial period for vendors, and after that, they have to 50$ a month to use the platform.
Vendors can list their products.
When a customer makes a purchase, vendors will get a notification, and they have to make the item to be picked by the Foodanic delivery service. Simultaneously, the nearest delivery truck will get a message with the vendor and customer information.
For this, we will have to have one app for vendors, one for the delivery team, and one for customers. Customers also can use the foodanic.com website to order food.
What is the fundamental infrastructure needed for this app and your startup to provide its intended services?
Infrastructure requirements and solutions
- You need a Database to store your food vendors and customer information and other information like orders. You can use Cloud Firestore for this. Cloud Firestore Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud. Cloud Firestore is a cloud-hosted, NoSQL database that your iOS, Android, and web apps can access directly via native SDKs. Cloud Firestore is also available in native Node.js, Java, Python, Unity, C++, and Go SDKs, in addition to REST and RPC APIs. https://firebase.google.com/docs/firestore Before you start working on Cloud Firestore, learn about NoSQL data modeling. https://www.youtube.com/watch?v=lW7DWV2jST0&t=1s
- You need some general-purpose storage to store images
Use Cloud Storage for Firebase. This is easy to use, cost-effective storage, and You can use Firebase SDKs to store images, audio, video, or other user-generated content. You can secure your files using Firebase Security rules
- You need an Identity service for authenticating users for your app using email, phone number, Google, Facebook, etc.
Use Firebase Authentication service. This provides back-end services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to your app.
- Web hosting to host foodanic.com. Website is a front-end web app like React or Angular web app.
Use Firebase Hosting. This is production-grade web content hosting for developers. With a single command, you can quickly deploy web apps and serve both static and dynamic content to a global CDN
- Sending Emails and SMS to users
You can use a service like Twilio for both emails and SMS, or you can find a local service for SMS.
- Sending push notifications
Use Firebase Cloud Messaging (FCM) to send notifications for Android, IOS and Web clients.
Also, you can use FCM from Firebase console to send out promotional notifications for your user base and different user segments.
- Credit card payments
You can use some local provide depending on the country or use Stipe if available in your country. Do your research on payment options such as in-app purchases. It depends on the service you are providing. There are many controversies around Apple pushing companies to use their in-app purchases instead of using credit card payment. If you plan to have any paid services, do thorough research before implementing the feature.
- You need some email hosting providers to host your mailboxes for your company ex: firstname.lastname@example.org.
There are so many cheap email hosting provides, and it’s just a matter of finding a service provider to match your budget. In the beginning, you can use a free email forwarder like https://improvmx.com/
- You probably need an accounting system to manage your finance.
You can use Wave, and it’s free. https://www.waveapps.com/pricing
- Office tools such as Word processing and spreadsheets
Use Google docs, Sheets, and Google drive. You get 15GB of storage for free. Just remember, Google can see your content in the Drive.
Organize your Drive and provide appropriate access for the team.
- Track user behavior
Use Google Analytics for Firebase. The SDK automatically captures certain key events and user properties, and you can define your own custom events to measure the things that uniquely matter to your business.
- It would help if you had a way of tracking app crashes and understand issues to improve user experience.
Use Firebase Crashlytics. Firebase Crashlytics is a lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality.
- How to deploy test builds to internal testers quickly without going through App Store and Google play or sending files manually?
Use Firebase App Distribution. This makes distributing your apps to trusted testers painless. By getting your apps onto testers’ devices quickly, you can get feedback early and often.
- How to experiment with different features and make better decisions?
Of course, you can ask your friends and focus groups, but the best way to find out is to run AB tests. Firebase A/B Testing helps you optimize your app experience by making it easy to run, analyze, and scale product and marketing experiments.
- Shareable links for app promotions and ads
Use Firebase Dynamic Links. With Dynamic Links, your users get the best available experience for the platform they open your link. If a user opens a Dynamic Link on iOS or Android, they can be taken directly to the linked content in your native app. If a user opens the same Dynamic Link in a desktop browser, they can be taken to the equivalent content on your website.
- Sometimes we need to change the behavior and appearance of your app without publishing an app update.
Use the Firebase Remote Config. It is a cloud service that lets you change the behavior and appearance of your app without requiring users to download an app update.
- Source code maintenacne and version control
Github or GitLab
- Build Automation
Use Codemagic https://codemagic.io/
- Scheduled jobs, triggers, HTTP APIs
You can use Firebase Cloud Functions to schedule any back-end process or trigger an event based on a Firestore database operation. For example, you can send a notification to the user when a new document is added to a Fire Store collection.
In addition, you can create cloud functions as HTTP endpoints if in case if you want to expose an API to your app or to a third party.
What about data security, privacy, and compliance?
Security in the cloud is a shared responsibility between the cloud provider and the customer. Every cloud providers have a shared responsibility model when it comes to security and compliance. They guarantee compliance for the infrastructure, and then you have to make sure your application and your company is adhering to the compliance requirements.
Be aware of your privacy and compliance requirements before choosing any cloud storage solution. Read this for Firebase: https://firebase.google.com/support/privacy
If you are building healthcare-related apps, be aware of mandatory compliances like HIPAA
Check this for more information: https://cloud.google.com/security/compliance
You would need to do more research on this related to your application and the company. This is an example of building a HIPAA compliance chat app
Check out this white papper
Where would my data store and processed?
You should be aware of Data storage and processing locations. For example, some services run only in the US, such as Firebase Hosting, Realtime Database, and Authentication
Firebase services are billed based on its usage, and until you reach a considerable user base you can run all the services for free.
Setup a usage alert to avoid unpredicted billing.
You need to check pricing for other services like payment gateway, SMS and emails.
Drawbacks and limitations of Firebase
- Vendor lock-in. Everything is dependent on Firebase SDK; therefore, you will have to rewrite the whole app if you choose to change your back-end later on.
- Data migration problems. You have to write programs to import/export data from Firestore to and in JSON format.
- Limited querying capabilities. You will have very less query capabilities on the Firebase console.
- Will not work in countries where Google is not allowed
- Cloud Function has some delay; it could be up to 10 seconds. They are microservices and they need to be started when an event occurs, so there is some warm up time for Cloud Functions.
- Free tier has limitations on services like Analytics, concurrent connections, Google maps
- Be aware of Cloud Firestore limits such as document write frequency and size limits. https://firebase.google.com/docs/firestore/quotas
- Understand Firestore query limitations https://firebase.google.com/docs/firestore/query-data/queries
Firebase services encrypt data in transit using HTTPS and logically isolate customer data.
In addition, several Firebase services also encrypt their data at rest:
- Cloud Firestore
- Cloud Functions for Firebase
- Cloud Storage for Firebase
- Firebase Authentication
- Firebase Cloud Messaging
- Firebase Realtime Database
- Firebase Test Lab
Setting up Firebase environment
Do some thinking before you create your environments. You would typically need Development, Testing, and Production environments. Or make it simple to keep one environment for Dev and test and one for Production. Name your environments appropriately to avoid accidental changes or deletes. Provide appropriate access. You can provide access to your staff based on roles using user and permission options. Use the principle of least privilege. The principle of least privilege works by allowing only enough access to perform the required job.
You have to develop a release flow of the apps for internal tests, TestFligt/ Internal Beta, and then production. Below is a simplified flow of app releases.
Use Firebase App Distribution to send releases quickly without any review process. Also, you can use Crashlytics to monitor issues and app crashes in each build.
Once you decide to release the app to the production, you need to go through the app review process for both Google and Apple. Then release the app internally as a beta or TestFlight and do a high level test, and finally, publish.
Branching strategy for GIT
After your app goes live, you will have to work in parallel to fix issues and develop new features. If you don’t have a clear branching strategy, you will end up in a mess. Therefore, do some brainstorming with your team and come up with a plan. This is a helpful article on this.
Be prepared to go through the hurdles of getting App Store approval
Allocate some time to do your research on how to get your App approved by Google Play and App Store. Specifically, for AppStore, they have stringent guidelines. So do your studies and get everything ready before you submit your app for approval.
- There are specific guidelines for the medical and health apps in the iOS App Store.
Read this blog post about the new points related to the guideline.
If your company is a single owner or a proprietary establishment, then you will not be able to put your company name in the App Store. You will not be allowed to create an organization account in App Store. And you have to use an individual developer account.