Tech Stack Overview¶
This document provides a detailed overview of the technologies and tools used in Forest.
1. Programming Languages¶
- Python: primary language for backend services and scripting where needed. We are currently moving to Go.
- Go: New company standard for backend services, event processing and high-performance tasks.
- sqlc: command-line tool that functions as a SQL compiler, generating type-safe Go code from SQL queries.
- Flutter: For mobile apps development.
- TypeScript / JavaScript: for frontend services.
2. Databases¶
2.1 Cloud SQL (GCP)¶
- Primary relational database for backend services.
- PostgreSQL compatible.
2.2 Supabase¶
- Used for internal apps and data management.
- Provides authentication and RBAC.
- PostgreSQL compatible.
- Support local development using containerized supabase image.
2.3 PostgreSQL¶
- Used for backend services local development.
- Seeded with mock data for testing.
3. Cache¶
-
Redis / Memorystore for Redis (GCP)
-
Caching sessions and frequently accessed data.
- Supports replication and failover.
- Used for backend services local development by local instantiation.
4. Database Migrations¶
- Atlas: primary migration tool for managing DB schema changes on backend services.
- Supabase migrations: primary migration tool for managing DB schema changes on frontend services.
- Goose: used for webhooks-api service as lightweight migration.
5. Secrets Management¶
- GCP Secret Manager: centralized secrets for services deployed in Cloud Run.
- Doppler: secret management for local development and CI/CD pipelines, already integrated with GCP secrets manager.
6. Event & Webhook Tools¶
- Hookdeck: webhook management, monitoring, and retries.
- Pub/Sub (GCP): event-driven architecture for async processing. (Not implemented yet)
7. Monitoring & Logging¶
- Sentry: error monitoring for backend and frontend services.
- Grafana: dashboards and metrics visualization.
- Prometheus: metrics collection for backend services.
8. Cloud Platform & Infrastructure¶
-
Google Cloud Platform (GCP)
-
Cloud Run for containerized services.
- Cloud SQL for managed PostgreSQL.
- Redis / Memorystore for Redis.
- Cloud Storage buckets.
- Cloud NAT, VPC, and IAM for networking and security.
-
Pub/Sub for async messaging.
-
Vercel
-
Preview and Production branches.
9. Documentation Tools¶
- MkDocs + Material theme + plugins: internal documentation site, with plugins for diagrams for architecture and processes, among other uses.
- APIDog: API reference documentation.
10. Others¶
- Wunder: TBD.
- Directus: CMS used to manage customer-facing information.
- Lokalize: TBD
- CloudFlare: TBD