Project structure
formizee architecture explained
Databases
We use Turso with LibSQL for the databases.
Tenant Database
The Tenant Database is the primary data store for all tenant-related information. This serves as the central source of truth for user configurations, relationships, and settings.
Database Submission Cluster
The Database Submission Cluster is composed of a main shared-submissions
database, this database is the default source of the submissions.
Also, if a workflow detects more than 10.000 submissions of a single endpoint inside the shared-submissions
database, the workflow will perform a migration to a new database specifically for that endpoint
- Purpose: Lightweight and scalable database cluster for handling high volumes of submissions efficiently.
- Security: This cluster is isolated, and is only accessed from the Vault service.
Storage
The Storage Bucket is a distributed object store for file uploads and other unstructured data.
We use Cloudflare R2 in production.
Local Development
As a alternative, since we use the S3 protocol, when you setup the docker container, this includes a minio image already configured to be compatible with the stack.
Services
API
The API is it self a REST API that allows the user to manage the entire workspace. But also is the responsible of handle the upload of submissions.
- Technology: Cloudflare Workers
Vault
The Vault is responsible for securely managing submissions:
- Technology: Cloudflare Workers
- Security: We use a AES-GCM key for each endpoint created for store the submissions.
- Caching: Temporary storage to accelerate secure operations.
Dashboard
The Dashboard is the user-facing application that provides insights and control over tenant data.
- Technology: Next.js
- Features:
- Real-time analytics visualization.
- Management of workflows, configurations, and user data.
Analytics
We use Tinybird (Clickhouse) as analytics and metrics service
See /internal/analytics
and /internal/metrics
for the source code
This architecture ensures scalability, security, and efficiency in handling form submissions, tenant management, and analytics. If you need additional details or diagrams, feel free to reach out!
Was this page helpful?