bayan-api / docs /architecture /03-component-diagram.md
youssefreda9's picture
HF Deploy: Fix syntax error with smart quotes in popup.js
fe1e225
|
Raw
History Blame Contribute Delete
4.98 kB

03 — Component Diagram

Overview

This diagram shows how BAYAN's software components are organized and interact across Frontend, API, NLP, and Data layers.

Component Diagram

graph TB
    subgraph "Frontend SPA"
        direction TB
        subgraph "Pages"
            HOME["🏠 Landing Page"]
            FEATURES["⚡ Features Page"]
            EDITOR_PAGE["📝 Editor Page"]
            PRICING["💰 Pricing Page"]
            P404["🚫 404 Page"]
        end

        subgraph "Editor Core"
            EDITOR["editor.js<br/>State · Undo/Redo · Analysis"]
            RENDERER["renderer.js<br/>Error Highlighting · Spans"]
            SELECTION["selection.js<br/>Caret · Range · Offset"]
            FORMAT["format.js<br/>Bold · Italic · Lists · Colors"]
        end

        subgraph "Auth System"
            AUTH_GATE["Auth Gate<br/>Login Modal"]
            AUTH_JS["auth.js<br/>Guest · Google · Link"]
            AUTH_UI["auth-ui.js<br/>Menu · Avatar · Banner"]
            SESSION["session.js<br/>Token Refresh"]
            SB_CLIENT["client.js<br/>Supabase Init"]
        end

        subgraph "Data Modules"
            DOC_API["documents-api.js<br/>CRUD Operations"]
            DOC_UI["documents-ui.js<br/>Sidebar · List · Search"]
            DOC_STATE["documents-state.js<br/>Current Doc Tracking"]
            SUMM_API["summaries-api.js<br/>Save · Load · Delete"]
            SUMM_UI_MOD["summaries-ui.js<br/>Display · Export TXT"]
            SET_API["settings-api.js<br/>Load · Save"]
            SET_SYNC["settings-sync.js<br/>Apply · Sync"]
        end

        subgraph "Sync Engine"
            SYNC_MGR["sync-manager.js<br/>Online/Offline"]
            SYNC_Q["sync-queue.js<br/>Operation Queue"]
            SYNC_RES["sync-resolver.js<br/>Conflict Resolution"]
        end

        subgraph "Utilities"
            API_JS["api.js<br/>HTTP Client"]
            THEME["theme.js<br/>Dark/Light Toggle"]
            UI_JS["ui.js<br/>Toast · Score · Suggestions"]
        end
    end

    subgraph "API Layer (Flask)"
        FLASK["Flask App<br/>app.py"]
        
        subgraph "Endpoints"
            E_HEALTH["/api/health"]
            E_ANALYZE["/api/analyze"]
            E_SPELL["/api/spelling"]
            E_GRAMMAR["/api/grammar"]
            E_PUNCT["/api/punctuation"]
            E_SUMMARY["/api/summarize"]
            E_AUTO["/api/autocomplete"]
            E_DEBUG["/api/debug/models"]
        end
    end

    subgraph "NLP Services"
        LOADER["model_loader.py<br/>Lazy Loading · Caching"]
        
        subgraph "Models"
            M_SPELL["AraSpell<br/>araspell_service.py<br/>araspell_rules.py"]
            M_GRAM["Grammar Service<br/>grammar_service.py"]
            M_PUNCT["PuncAra-v1<br/>Punctuation Model"]
            M_AUTO["AutoComplete<br/>Language Model"]
            M_SUMM["Summarization<br/>MBart (float16)"]
        end

        HF_API["hf_inference.py<br/>Remote HF API Fallback"]
    end

    subgraph "Data Layer"
        SUPABASE["Supabase<br/>PostgreSQL + Auth + RLS"]
        LOCALSTORAGE["localStorage<br/>Drafts · Goals · Dismissed"]
    end

    %% Connections
    EDITOR --> API_JS
    API_JS --> FLASK
    FLASK --> E_HEALTH & E_ANALYZE & E_SPELL & E_GRAMMAR & E_PUNCT & E_SUMMARY & E_AUTO

    E_ANALYZE --> LOADER
    E_SPELL --> LOADER
    E_GRAMMAR --> LOADER
    E_PUNCT --> LOADER
    E_SUMMARY --> LOADER
    E_AUTO --> LOADER

    LOADER --> M_SPELL & M_GRAM & M_PUNCT & M_AUTO & M_SUMM
    LOADER --> HF_API

    DOC_API --> SUPABASE
    SUMM_API --> SUPABASE
    SET_API --> SUPABASE
    AUTH_JS --> SUPABASE
    SYNC_MGR --> DOC_API

    EDITOR --> LOCALSTORAGE

    style FLASK fill:#059669,color:#fff
    style SUPABASE fill:#3B82F6,color:#fff
    style LOADER fill:#7C3AED,color:#fff

Component Responsibilities

Component Files Responsibility
Editor Core editor.js, renderer.js, selection.js, format.js Text editing, error highlighting, formatting
Auth System auth.js, auth-ui.js, session.js, client.js, config.js Authentication flow, session management
Documents documents-api.js, documents-ui.js, documents-state.js Document CRUD, sidebar, search
Summaries summaries-api.js, summaries-ui.js Summary storage and display
Settings settings-api.js, settings-sync.js User preferences persistence
Sync Engine sync-manager.js, sync-queue.js, sync-resolver.js Offline support, conflict resolution
API Client api.js HTTP request abstraction
Flask API app.py 8 REST endpoints
NLP Services model_loader.py, araspell_service.py, hf_inference.py Model loading, inference

Extension Points

  • New pages: Add HTML section + showPage() entry.
  • New NLP model: Add to model_loader.py + new /api/ route.
  • New Supabase table: Add migration SQL + API module + UI module.