The app is build using Google Cloud Platform (GCP) and Firebase.
Serverless approach is used mainly.
- Google Cloud Run
- Google Cloud SQL (for PostgreSQL)
- Google Cloud Tasks
- Google Cloud Logging
- Google Cloud IAM
- Firebase Authentication
- Firebase Hosting (for future Admin Panel)
- Firebase Storage
- Sentry (for error logging)
- Frontend apps (iOS & future Admin Panel) communicate with backend via REST API.
- REST API is build on top of Node using Nest.js framework
- Docker container with REST API app is deployed to Google Cloud Run (GCR).
- GCR scales REST API up and down in serverless way.
- GCR connects with Google Cloud SQL to get access to production PostgreSQL DB.
- Cloud SQL keeps DB up and running, tracks usage, makes automatic backups and provides replication (not yet used).
- REST API communicates with Google Cloud Tasks to schedule tasks in the future.
- Firebase Authentication is used on frontend side to do user authentication (email+password, passwordless, Google, Facebook, Twitter, Phone auth, etc) and returns JWT.
- JWT is used to verify user's requests on REST API side and Cloud Storage.
- Cloud Storage is used for files storage (upload/download static resources).
- REST API also uses Cloud Memorystore (serves Redis) for caching and Cloud Logging/Sentry for logs/errors.
- Firebase Hosting hosts Admin Panel and Web Client apps.