01 — System Overview¶
The big picture: how the entire Blinkin platform fits together across all four repositories.
System Architecture Diagram¶
The following diagram shows how all four repositories connect — from the user-facing frontend apps, through the backend API, into the AI platform, and out to infrastructure.
graph TB
%% ───────────────────────────────────────────────
%% USERS
%% ───────────────────────────────────────────────
Creator["👤 Creator / Admin<br/>(builds flows)"]
EndUser["👤 End User<br/>(interacts with flows)"]
ExternalSite["🌐 External Website<br/>(embeds blinks)"]
%% ───────────────────────────────────────────────
%% PICASSO-FE (Frontend Monorepo)
%% ───────────────────────────────────────────────
subgraph picasso_fe ["picasso-fe — React/TypeScript Monorepo"]
direction TB
subgraph editor_app ["Picasso Editor App"]
Editor["Visual Flow Editor<br/>(ReactFlow)"]
EditorDash["Creator Dashboard<br/>picasso-app.blinkin.io"]
end
subgraph houston_app ["Houston App"]
Houston["Public Flow Viewer<br/>houston-app.blinkin.io"]
end
subgraph widget_app ["Widget"]
Widget["Embeddable Script<br/>(iframe)"]
end
end
%% ───────────────────────────────────────────────
%% STUDIO-API (Backend)
%% ───────────────────────────────────────────────
subgraph studio_api ["studio-api — NestJS Backend"]
direction TB
subgraph studio_module ["Studio Module (Protected)"]
StudioEndpoints["/picasso/* endpoints<br/>Flow creation & management<br/>Auth0-protected"]
end
subgraph houston_module ["Houston Module (Public)"]
HoustonEndpoints["/houston/* endpoints<br/>Flow execution & interaction<br/>Public access"]
end
subgraph studio_services ["Core Services"]
BullQueues["Bull Job Queues<br/>(Redis-backed)"]
FileService["File Service<br/>(Azure Blob Storage)"]
AuthService["Auth Service<br/>(Auth0)"]
IntegrationService["Integration Service<br/>(Mailgun, Mux, Google Sheets, etc.)"]
end
end
%% ───────────────────────────────────────────────
%% ZWEISTEIN (AI Platform)
%% ───────────────────────────────────────────────
subgraph zweistein ["zweistein — AI Platform"]
direction TB
subgraph zw_admin ["Admin Panel (React)"]
AdminUI["AI Management Dashboard<br/>Bots, Concepts, Agents"]
end
subgraph zw_server ["Server (NestJS)"]
ZwAPI["/api/* endpoints<br/>API Gateway"]
ZwFileManager["File Management"]
ZwOrchestrator["Data Processing<br/>Orchestration"]
end
subgraph zw_ingestion ["Ingestion Worker (Python)"]
FileProcessor["File Processor<br/>(text, audio, video)"]
EmbeddingGen["Embedding Generator"]
RedisListener["Redis Streams<br/>Listener"]
end
subgraph zw_query ["Query Engine (Python / FastAPI)"]
LLMRouter["LLM Router<br/>(OpenAI, Gemini, Claude,<br/>Groq, Perplexity)"]
ChatEngine["Chat / Agent Engine"]
QueryProcessor["Query Processor"]
end
end
%% ───────────────────────────────────────────────
%% INFRASTRUCTURE
%% ───────────────────────────────────────────────
subgraph gitops ["blinkin-gitops — Kubernetes / Helm"]
direction LR
DevCluster["Dev Cluster"]
UATCluster["UAT Cluster"]
ProdCluster["Prod Cluster"]
end
%% ───────────────────────────────────────────────
%% DATA STORES
%% ───────────────────────────────────────────────
subgraph datastores ["Data Stores"]
direction LR
PostgreSQL[("PostgreSQL<br/>Main Database")]
Redis[("Redis<br/>Queues & Streams")]
Qdrant[("Qdrant<br/>Vector Database")]
AzureBlob[("Azure Blob<br/>File Storage")]
GCS[("Google Cloud Storage<br/>AI File Storage")]
end
%% ───────────────────────────────────────────────
%% EXTERNAL SERVICES
%% ───────────────────────────────────────────────
subgraph external ["External Services"]
direction LR
Auth0["Auth0<br/>Authentication"]
Mailgun["Mailgun<br/>Email"]
Mux["Mux<br/>Video"]
GoogleSheets["Google Sheets<br/>Data"]
LLMProviders["LLM Providers<br/>(OpenAI, Gemini, Claude,<br/>Groq, Perplexity)"]
end
%% ───────────────────────────────────────────────
%% CONNECTIONS — Users to Frontend
%% ───────────────────────────────────────────────
Creator -->|"builds flows"| EditorDash
EndUser -->|"interacts with flows"| Houston
ExternalSite -->|"embeds via iframe"| Widget
%% ───────────────────────────────────────────────
%% CONNECTIONS — Frontend to Backend
%% ───────────────────────────────────────────────
Editor -->|"/picasso/* endpoints"| StudioEndpoints
Editor -->|"/api/* endpoints"| ZwAPI
EditorDash -->|"/picasso/* endpoints"| StudioEndpoints
Houston -->|"/houston/* endpoints"| HoustonEndpoints
Widget -->|"/houston/* endpoints"| HoustonEndpoints
%% ───────────────────────────────────────────────
%% CONNECTIONS — Studio API internals
%% ───────────────────────────────────────────────
StudioEndpoints --> BullQueues
HoustonEndpoints --> BullQueues
StudioEndpoints --> FileService
StudioEndpoints --> AuthService
StudioEndpoints --> IntegrationService
%% ───────────────────────────────────────────────
%% CONNECTIONS — Studio API to Data Stores
%% ───────────────────────────────────────────────
studio_api -->|"read/write"| PostgreSQL
BullQueues -->|"job queue"| Redis
FileService -->|"file upload/download"| AzureBlob
%% ───────────────────────────────────────────────
%% CONNECTIONS — Studio API to Zweistein
%% ───────────────────────────────────────────────
BullQueues -->|"sends data via queue"| RedisListener
%% ───────────────────────────────────────────────
%% CONNECTIONS — Zweistein internals
%% ───────────────────────────────────────────────
ZwAPI --> ZwOrchestrator
ZwOrchestrator --> RedisListener
RedisListener --> FileProcessor
FileProcessor --> EmbeddingGen
EmbeddingGen -->|"store embeddings"| Qdrant
QueryProcessor --> LLMRouter
ChatEngine --> QueryProcessor
ZwAPI --> ChatEngine
%% ───────────────────────────────────────────────
%% CONNECTIONS — Zweistein to Data Stores
%% ───────────────────────────────────────────────
zw_server -->|"read/write"| PostgreSQL
zw_server -->|"publish streams"| Redis
zw_ingestion -->|"listen streams"| Redis
ZwFileManager -->|"file storage"| GCS
%% ───────────────────────────────────────────────
%% CONNECTIONS — External Services
%% ───────────────────────────────────────────────
AuthService --> Auth0
IntegrationService --> Mailgun
IntegrationService --> Mux
IntegrationService --> GoogleSheets
LLMRouter --> LLMProviders
%% ───────────────────────────────────────────────
%% CONNECTIONS — GitOps deploys everything
%% ───────────────────────────────────────────────
gitops -.->|"deploys"| studio_api
gitops -.->|"deploys"| picasso_fe
gitops -.->|"deploys"| zweistein
%% ───────────────────────────────────────────────
%% STYLES
%% ───────────────────────────────────────────────
classDef userNode fill:#f9f,stroke:#333,stroke-width:2px
classDef feNode fill:#61dafb,stroke:#333,stroke-width:1px,color:#000
classDef beNode fill:#e0234e,stroke:#333,stroke-width:1px,color:#fff
classDef aiNode fill:#a855f7,stroke:#333,stroke-width:1px,color:#fff
classDef dataNode fill:#fbbf24,stroke:#333,stroke-width:1px,color:#000
classDef extNode fill:#94a3b8,stroke:#333,stroke-width:1px,color:#000
classDef infraNode fill:#22c55e,stroke:#333,stroke-width:1px,color:#000
class Creator,EndUser,ExternalSite userNode
class Editor,EditorDash,Houston,Widget feNode
class StudioEndpoints,HoustonEndpoints,BullQueues,FileService,AuthService,IntegrationService beNode
class AdminUI,ZwAPI,ZwFileManager,ZwOrchestrator,FileProcessor,EmbeddingGen,RedisListener,LLMRouter,ChatEngine,QueryProcessor aiNode
class PostgreSQL,Redis,Qdrant,AzureBlob,GCS dataNode
class Auth0,Mailgun,Mux,GoogleSheets,LLMProviders extNode
class DevCluster,UATCluster,ProdCluster infraNode
Simplified Data Flow¶
This diagram shows the high-level flow of data through the system — from content creation to AI-powered interaction.
flowchart LR
A["Creator builds<br/>flow in Editor"] -->|"saves via /picasso/*"| B["Studio API<br/>stores in PostgreSQL"]
B -->|"publishes flow"| C["Houston serves<br/>flow to end users"]
B -->|"sends to queue"| D["Zweistein ingests<br/>& generates embeddings"]
D -->|"stores in Qdrant"| E["Vector DB ready<br/>for AI queries"]
C -->|"user asks question"| F["Query Engine<br/>uses LLM + vectors"]
F -->|"returns answer"| C
Tech Stack Summary¶
| Category | Technologies |
|---|---|
| Languages | TypeScript, Python, JavaScript |
| Frontend Frameworks | React 18, Vite, ReactFlow, TailwindCSS, Ant Design |
| Backend Frameworks | NestJS (Node.js), FastAPI (Python) |
| Databases | PostgreSQL (relational data), Redis (queues & streams), Qdrant (vector embeddings) |
| ORM / Data Access | TypeORM (NestJS), SQLAlchemy (Python) |
| AI / ML | OpenAI API, Google Gemini, Anthropic Claude, Groq, Perplexity |
| Embedding Models | OpenAI Embeddings, Sentence Transformers |
| File Processing | FFmpeg (audio/video), PyPDF, Unstructured (document parsing) |
| File Storage | Azure Blob Storage (Studio API), Google Cloud Storage (Zweistein) |
| Authentication | Auth0 (OAuth 2.0 / OIDC) |
| Job Queues | Bull (Redis-backed, Studio API), Redis Streams (Zweistein) |
| Mailgun | |
| Video | Mux |
| Infrastructure | Google Cloud Platform (GCP), Kubernetes (GKE), Helm |
| CI/CD | GitHub Actions, Helm deployments |
| Monorepo Tooling | Nx (picasso-fe) |
| Package Managers | npm/yarn (TypeScript), pip/poetry (Python) |
Environment Overview¶
Blinkin runs across three environments. Each environment is a separate Kubernetes namespace deployed via Helm charts from blinkin-gitops.
| Environment | Picasso Editor URL | Houston URL | Deploy Method |
|---|---|---|---|
| Dev | picasso-app-dev.blinkin.io |
houston-app-dev.blinkin.io |
Auto-deploy on push to dev branch |
| UAT | picasso-app.blinkin.io |
houston-app.blinkin.io |
Manual deploy (promotion from dev) |
| Prod | Not yet available | Not yet available | Not yet configured |
graph LR
subgraph dev ["Dev Environment"]
DevPicasso["picasso-app-dev.blinkin.io"]
DevHouston["houston-app-dev.blinkin.io"]
end
subgraph uat ["UAT Environment"]
UATPicasso["picasso-app.blinkin.io"]
UATHouston["houston-app.blinkin.io"]
end
subgraph prod ["Prod Environment"]
ProdPicasso["Not yet available"]
ProdHouston["Not yet available"]
end
dev -->|"manual promotion"| uat
uat -->|"future"| prod
Push["Push to dev branch"] -->|"auto-deploy"| dev
style dev fill:#7b3eab,stroke:#6a3494,color:#fff
style uat fill:#0057b7,stroke:#004a9e,color:#fff
style prod fill:#5d5959,stroke:#444444,color:#aeafb4
Repository Summary¶
| Repository | Purpose | Primary Tech | Role in System |
|---|---|---|---|
| picasso-fe | Frontend monorepo — 3 apps (Editor, Houston, Widget) | React, TypeScript, Vite, ReactFlow, Nx | User-facing interfaces for building and viewing interactive flows |
| studio-api | Main backend API — flow CRUD, file management, integrations | NestJS, TypeORM, PostgreSQL, Bull, Redis | Central API server handling all business logic, data persistence, and external integrations |
| zweistein | AI platform — admin panel, API server, ingestion, query engine | React, NestJS, Python, FastAPI, Qdrant | AI/ML pipeline: ingests content, generates embeddings, powers LLM-based chat and query |
| blinkin-gitops | Infrastructure — Kubernetes & Helm deployment configs | Kubernetes, Helm, GCP | Manages deployment of all services across dev, UAT, and prod environments |
How the Repos Connect¶
Here is a summary of the key integration points between repositories:
| From | To | How | What |
|---|---|---|---|
| picasso-fe (Editor) | studio-api | HTTP REST (/picasso/*) |
Flow creation, updates, file uploads, user management |
| picasso-fe (Editor) | zweistein | HTTP REST (/api/*) |
AI bot configuration, concept management |
| picasso-fe (Houston) | studio-api | HTTP REST (/houston/*) |
Flow execution, user interaction data, analytics |
| studio-api | zweistein | Redis Queue | Sends ingestion jobs (files, content) for AI processing |
| zweistein (Server) | zweistein (Ingestion) | Redis Streams | Publishes processing tasks for the Python ingestion worker |
| zweistein (Query Engine) | LLM Providers | HTTP APIs | Sends prompts to OpenAI, Gemini, Claude, Groq, Perplexity |
| blinkin-gitops | All repos | Helm / K8s | Deploys and configures all services in GCP |
How to Navigate This Documentation¶
| If you want to... | Read this document |
|---|---|
| Understand the big picture and how everything connects | You are here — 01 System Overview |
| Understand end-to-end data flows | 02 — Data Flows |
| Work on the frontend (Editor, Houston, or Widget) | 03 — Picasso Frontend |
| Work on the backend API, database, or integrations | 04 — Studio API |
| Work on AI features, chatbots, or embeddings | 05 — Zweistein AI Platform |
| Deploy, debug infrastructure, or manage environments | 06 — Infrastructure |
| Look up key terms and definitions | 07 — Glossary |
| Configure AI agents | 08 — Agent Configuration |
Generated: February 2026 Next: 02 — Data Flows