π Notion Article with Diagrams
π¨ Diagram 1: Architecture Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAMVADA STUDIO β
β (React 18 + TypeScript) β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββ΄βββββββββββββββ
β β
βββββββββΌβββββββββ ββββββββββΌβββββββββ
β UI LAYER β β STATE LAYER β
β (Components) ββββββββββββΊβ (Context API) β
βββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β
β ββββββββββββββββββββββββββ
β β
β β ββββββββββββββββββββββββ
β βββββββββΊβ BUSINESS LOGIC β
β β (Utils, Services) β
β ββββββββββββ¬ββββββββββββ
β β
β ββββββββββββΌββββββββββββββββββββββββββββ
β β LLM PROVIDER ABSTRACTION β
β ββββββββββββββββββββββββββββββββββββββββ€
ββββββββββββββΊβ OpenAI β Anthropic β Google β Ollamaβ
β Azure β Custom β ... β ... β
ββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββ΄βββββββββββββββ
β β
βββββββββΌβββββββββ βββββββββββΌβββββββββ
β PERSISTENCE β β EXTERNAL APIs β
β (localStorage)β β (LLM Providers)β
ββββββββββββββββββ ββββββββββββββββββββ
KEY PRINCIPLES:
β
Separation of Concerns (UI, State, Logic, Data)
β
Single Responsibility (Each layer has one job)
β
Dependency Inversion (Abstract interfaces, concrete implementations)
π¨ Diagram 2: Data Flow
USER ACTION (Click, Type, Ctrl+K)
β
βΌ
ββββββββββββββββββββββββββββββββββ
β COMPONENT (UI Layer) β
β - Button clicked β
β - Input changed β
β - Shortcut pressed β
ββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββ
β DISPATCH (Action) β
β dispatch({ β
β type: 'ADD_CHAT', β
β payload: { ... } β
β }) β
ββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββ
β REDUCER (State Update) β
β function chatReducer( β
β state, action β
β ) { ... } β
ββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββ
β NEW STATE β
β state = { ...old, ...new } β
ββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββ
β SIDE EFFECTS (if needed) β
β - Save to localStorage β
β - Call LLM API β
β - Update UI β
ββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββ
β RE-RENDER (React) β
β Components update based on β
β new state β
ββββββββββββββββββββββββββββββββββ
π¨ Diagram 3: Security Model
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER'S BROWSER β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β COMPONENT STATE (In-Memory) β β
β β β β
β β const [apiKey, setApiKey] = useState('') β β
β β β β
β β β
API keys stored here β β
β β β
Cleared when tab closes β β
β β β
Never persisted β β
β βββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
β β Used for API calls only β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β HTTPS REQUEST β β
β β β β
β β Headers: { β β
β β 'Authorization': `Bearer ${apiKey}` β β
β β } β β
β β β β
β β β
Encrypted in transit β β
β β β
Never logged β β
β βββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββ
β
β HTTPS (Encrypted)
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LLM PROVIDER (OpenAI, Claude, etc.) β
β β
Receives encrypted request β
β β
Validates API key β
β β
Returns response β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WHAT WE DON'T DO:
- localStorage.setItem('apiKey', ...) β NEVER
- Send API keys in query params β NEVER (except Google official method)
- Log API keys to console β NEVER
- Store API keys in cookies β NEVER
β
WHAT WE DO:
- In-memory storage only
- HTTPS enforcement (except localhost Ollama)
- Input sanitization
- No backend = No data collection
π¨ Diagram 4: Multi-Provider Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAMVADA STUDIO (UI) β
β β
β User types prompt: "Explain TypeScript" β
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PROVIDER ABSTRACTION LAYER β
β β
β async function callLLM( β
β provider: LLMProvider, β
β prompt: string β
β ): Promise<Response> β
β β
β - Validates provider config β
β - Routes to correct implementation β
β - Handles errors uniformly β
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββ΄βββββββββββ
β switch(provider.type)β
ββββββββββββ¬ββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββ
β OpenAI β βAnthropicβ β Google β β Ollama β β Azure β β Custom β
ββββββββββ€ ββββββββββ€ ββββββββββ€ ββββββββββ€ ββββββββββ€ ββββββββββ€
β β β β β β β β β β β β
β GPT-4 β βClaude β β Gemini β β Llama β β GPT-4 β β Any β
β GPT-3.5β β 3.5 β β Pro β β Mistralβ β (Azure)β β API β
β β β β β β β β β β β β
ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ
β β β β β β
β HTTPS β HTTPS β HTTPS β HTTP(*) β HTTPS β Config
βΌ βΌ βΌ βΌ βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXTERNAL LLM APIS β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
(*) Ollama: HTTP allowed for localhost only (local model)
ADDING NEW PROVIDER (20 minutes):
1. Add type to union (1 min)
2. Add case to switch (1 min)
3. Implement API call (15 min)
4. Test (3 min)
β
Done!
π¨ Diagram 5: Feature Map
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAMVADA STUDIO β
β 35+ FEATURES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββ
β CORE CHAT β β POWER USER β β ORGANIZATION β
βββββββββββββββββ€ ββββββββββββββββββ€ βββββββββββββββββββ€
β Inline Edit β β Cmd Palette β β Pin Chats β
β Drafts β β Voice Input β β Archive β
β Regenerate β β Text-to-Speech β β Star Messages β
β Quote Text β β Templates β β Folders β
β Markdown β β Token Counter β β Search β
βββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββ
β β β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β
ββββββββββββββββ΄ββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββββ ββββββββββββββββββββ
β MULTI-PROVIDER β β SECURITY β
βββββββββββββββββββββ€ ββββββββββββββββββββ€
β OpenAI β β In-Memory Keys β
β Anthropic β β HTTPS Only β
β Google β β Input Sanitize β
β Ollama β β No Backend β
β Azure β β Local-First β
β Custom β β Privacy by Designβ
βββββββββββββββββββββ ββββββββββββββββββββ
INSPIRED BY:
β’ Gemini (Inline Edit, Drafts)
β’ ChatGPT (Archive, Quote)
β’ Copilot (Command Palette, Shortcuts)
β’ VS Code (Keyboard-first)
β’ Obsidian (Local-first)