--- title: "Solution Overview" description: "High-level architecture and technical details of the Formbricks platform" icon: "presentation-screen" --- The Formbricks platform is designed with a modern, unified architecture that prioritizes developer experience and performance. This overview outlines the system's architecture, key technology choices, and how different components interact. ## System Architecture Formbricks uses a unified architecture with Next.js at its core, serving both the frontend and backend capabilities. Here's an interactive overview of the system: ```mermaid graph TD subgraph Users MU[Mobile User] WU[Web User] LSU[Link Survey User] AD[Admin] end subgraph Client Applications MA[Mobile App\niOS/Android SDK] SW[Survey Widget\nJavaScript SDK] end subgraph Formbricks Platform NS[Next.js Server\nAPI Routes + SSR\nBusiness Logic] subgraph Storage DB[(PostgreSQL\nSurveys & Data)] RC[(Redis\nPerformance Cache)] FS[File Storage\nUploads] end end MU --> |Uses| MA WU --> |Interacts| SW LSU --> |Direct Access| NS AD --> |Manages| NS MA --> |REST API| NS SW --> |REST API| NS NS --> |Cache Data| RC NS --> |Read/Write| DB NS --> |File Upload| FS style DB fill:#00C4B8,color:#ffffff style RC fill:#00C4B8,color:#ffffff style FS fill:#00C4B8,color:#ffffff style NS fill:#0D9373,color:#ffffff style MA fill:#07C983,color:#ffffff style SW fill:#07C983,color:#ffffff classDef user fill:#666,color:#fff,stroke:#333 class MU,WU,LSU,AD user ``` ### Key Components #### Users - **Mobile Users**: Access surveys through native mobile applications - **Web Users**: Interact with embedded survey widgets on websites - **Link Survey Users**: Access surveys directly through shared URLs - **Admins**: Manage surveys and view responses through the web dashboard #### Client Applications - **Survey Widget**: A JavaScript component that can be embedded in web applications - **Mobile Application**: Native iOS/Android apps that integrate with the Formbricks SDK - **Web Dashboard**: The admin interface for managing surveys and viewing responses #### Core Platform - **Next.js Server**: The central component that handles: - Frontend rendering and SSR - API routes for client communication - Business logic implementation - Survey display and response collection #### Data Storage - **PostgreSQL Database**: Primary data store for: - Survey definitions - Response data - User and organization information - **Redis Cache**: Performance optimization through: - Caching frequently accessed data - Reducing database load - Improving response times ### Communication Flow 1. **Client Interaction** - Web users interact with embedded survey widgets - Mobile users engage with surveys through native apps - Link survey users access surveys directly via URLs - Admins manage the system through the web dashboard 2. **Data Flow** - Clients communicate with the Next.js server via REST APIs - Survey data is fetched and responses are submitted over HTTPS - The server processes requests and interacts with the database using Prisma ORM - Frequently accessed data is cached in Redis for performance 3. **Data Storage** - Persistent data is stored in PostgreSQL - Frequently accessed data is cached in Redis - File attachments are handled through the configured storage provider ## Technology Stack - **Frontend**: React, TailwindCSS, Radix UI - **Backend**: Next.js App Router with API Routes - **Database**: PostgreSQL with Prisma ORM - **Caching**: Redis - **API**: REST with OpenAPI specification - **Testing**: Playwright for E2E, Vitest for unit tests