Saltar al contenido principal

Tech Stack

The table below lists every fixed technology decision in the v1 stack. These are not configurable — changing any of them constitutes a structural change to the application.

Fixed Decisions

LayerTechnologyRationale
FrontendSvelteKit + TypeScript + Tailwind CSSSimpler component model, file-based routing, clean minimal shell
BackendPython 3.13+ + FastAPI + PydanticModel orchestration fit, streaming support, Pydantic contracts
ORMSQLAlchemy 2.x + AlembicType-safe queries, migration management
DatabasePostgreSQL 16 + pgvectorPrimary relational store + vector search in one system
AuthSupabase Auth (GoTrue)Email/password, JWT sessions; app enforces authorization
Object StorageSupabase Storage / S3-compatibleSingle object-store abstraction
Background QueueRedis + RQLightweight, sufficient for ingestion jobs
Chat StreamingServer-Sent Events (SSE)Simpler than WebSockets for one-way token streaming
LLM ProvidersOpenAI, Anthropic, OpenRouter, OllamaOne active provider at a time

Notes

React is not part of the v1 stack. The application frontend is built entirely with SvelteKit. The documentation site (this site) uses Docusaurus, which is React-based, but it is a separate artifact from the application itself.

One active LLM provider at a time. The application supports OpenAI, Anthropic, OpenRouter, and Ollama as provider options, but only a single provider/model is active globally at any given time. Switching providers is done through the Admin settings UI.

pgvector eliminates a separate vector database. Storing embeddings directly in PostgreSQL via the pgvector extension keeps the infrastructure footprint small and avoids the operational overhead of a dedicated vector store.

SSE over WebSockets for streaming. Chat token streaming is a one-way server-to-client flow. Server-Sent Events are sufficient and simpler to operate than a full WebSocket connection.