Physical View
The Physical View describes the system's deployment architecture, infrastructure, and runtime environment.
Deployment Diagram - Production Architecture
The repository defines two deployment workflows: a Vercel Nitro deployment and a Gitea Actions workflow that runs the Nitro Node server in a Node 24 Docker container. The Node-server path attaches the Yjs WebSocket plugin to the Nitro listener.
Deployment Diagram - Build Pipeline
The CI/CD and build process.
Infrastructure Diagram - Runtime Components
Runtime components for editing, authenticated APIs, persistence, and collaborative sessions.
Network Diagram - Request Flow
Page, API, file storage, and collaboration traffic use separate request paths.
Container Diagram - Runtime Isolation
The self-hosted package contains the Node server and WebSocket upgrade handler. The repository also defines a separate Vercel deployment workflow.
Technology Deployment Matrix
| Component | Technology | Location | Purpose |
|---|---|---|---|
| Frontend | SolidJS + SolidStart + Vite | Browser and Nitro output | Client UI and server rendering |
| API / SSR | Nitro with SolidStart | Vercel preset or Node 24 container | Pages and backend routes |
| Auth | Better-Auth | Nitro server | Session and GitHub/Google OAuth |
| Database | PostgreSQL | External | Users, sessions, files, versions |
| File Storage | Internal HTTP API | External service | User document bytes |
| Collaboration | Yjs + y-websocket | Nitro listener on Node server; configurable URL | Shared editor state and awareness |
| Build and deploy | Gitea Actions | Vercel or Docker host | Main-branch deployment workflows |
| Testing | Vitest | Development / CI | Unit and component tests |
Environment Configuration
Runtime and service configuration. YJS_WS_PORT is used by the standalone development WebSocket server; production can use Nitro's WebSocket plugin or VITE_YJS_WS_URL to point the browser at a configured endpoint.
File Versioning Architecture
Versioned file storage uses an external file service for bytes and PostgreSQL for metadata; the latest four versions are retained.