bayan-api / docs /architecture /01-system-overview.md
youssefreda9's picture
HF Deploy: Fix syntax error with smart quotes in popup.js
fe1e225
|
Raw
History Blame Contribute Delete
4.74 kB
# 01 — High-Level System Architecture
## Overview
BAYAN is a full-stack Arabic NLP web application that provides intelligent writing assistance: spelling correction (AraSpell), grammar checking, punctuation restoration (PuncAra-v1), autocomplete suggestions, and text summarization. The system is deployed as a containerized Flask application on HuggingFace Spaces, with Supabase as the backend database and Google OAuth for authentication.
## Architecture Diagram
```mermaid
graph TD
subgraph "Client Layer"
U["👤 User (Browser)"]
UI["UI Layer<br/>Landing · Features · Editor · Pricing"]
EDITOR["Editor Engine<br/>editor.js · renderer.js · selection.js"]
AUTH["Auth Module<br/>Guest · Google OAuth · Supabase Auth"]
SYNC["Sync Engine<br/>SyncManager · SyncQueue · SyncResolver"]
DOCS["Documents Manager<br/>documents-api · documents-ui"]
SUMM_UI["Summaries UI<br/>summaries-api · summaries-ui"]
SETTINGS["Settings Sync<br/>settings-api · settings-sync"]
EXPORT["Export System<br/>TXT · DOCX · PDF"]
end
subgraph "API Layer (Flask)"
API["Flask REST API<br/>Gunicorn · CORS"]
HEALTH["/api/health"]
ANALYZE["/api/analyze"]
SPELL["/api/spelling"]
GRAMMAR["/api/grammar"]
PUNCT["/api/punctuation"]
SUMMARY["/api/summarize"]
AUTOCOMPLETE["/api/autocomplete"]
end
subgraph "NLP Layer (Models)"
ML["ModelLoader"]
ARASPELL["AraSpell<br/>AraBERT Encoder-Decoder"]
GRAM_MODEL["Bayan Grammar<br/>Grammar Rules Engine"]
PUNC_MODEL["PuncAra-v1<br/>Punctuation Restoration"]
AUTO_MODEL["AutoComplete<br/>Language Model"]
SUMM_MODEL["Summarization<br/>MBart Fine-tuned"]
end
subgraph "Data Layer"
SUPA["Supabase (PostgreSQL)"]
PROFILES["profiles"]
DOCUMENTS["documents"]
SUMMARIES["summaries"]
SETTINGS_DB["settings"]
LOCAL["localStorage<br/>Drafts · Dismissed Words"]
end
subgraph "Infrastructure"
HF["HuggingFace Spaces"]
DOCKER["Docker Container"]
GH["GitHub Repository"]
CI["GitHub Actions CI/CD"]
GOOGLE["Google OAuth Provider"]
end
U --> UI
UI --> EDITOR
UI --> AUTH
EDITOR --> SYNC
EDITOR --> DOCS
EDITOR --> SUMM_UI
EDITOR --> SETTINGS
EDITOR --> EXPORT
EDITOR -->|"POST /api/analyze"| API
SUMM_UI -->|"POST /api/summarize"| API
AUTH -->|"Supabase SDK"| SUPA
API --> HEALTH
API --> ANALYZE
API --> SPELL
API --> GRAMMAR
API --> PUNCT
API --> SUMMARY
API --> AUTOCOMPLETE
ANALYZE --> ML
SPELL --> ML
GRAMMAR --> ML
PUNCT --> ML
SUMMARY --> ML
AUTOCOMPLETE --> ML
ML --> ARASPELL
ML --> GRAM_MODEL
ML --> PUNC_MODEL
ML --> AUTO_MODEL
ML --> SUMM_MODEL
SYNC --> SUPA
DOCS --> SUPA
SUMM_UI --> SUPA
SETTINGS --> SUPA
SUPA --> PROFILES
SUPA --> DOCUMENTS
SUPA --> SUMMARIES
SUPA --> SETTINGS_DB
EDITOR --> LOCAL
HF --> DOCKER
DOCKER --> API
GH --> CI
CI -->|"Deploy"| HF
AUTH --> GOOGLE
style U fill:#4F46E5,stroke:#312E81,color:#fff
style API fill:#059669,stroke:#064E3B,color:#fff
style SUPA fill:#3B82F6,stroke:#1E3A8A,color:#fff
style HF fill:#FF9D00,stroke:#92400E,color:#fff
style ML fill:#7C3AED,stroke:#4C1D95,color:#fff
```
## Layer Descriptions
| Layer | Components | Responsibility |
|-------|-----------|----------------|
| **Client** | HTML/CSS/JS SPA | User interface, editor, auth gate, document management |
| **API** | Flask + Gunicorn | REST endpoints, request validation, model orchestration |
| **NLP** | 5 ML models | Spelling, grammar, punctuation, autocomplete, summarization |
| **Data** | Supabase + localStorage | Persistent storage, auth, offline drafts |
| **Infrastructure** | Docker + HF Spaces + CI | Containerization, deployment, monitoring |
## Design Rationale
1. **Single-Page Application (SPA)**: No framework overhead — pure HTML/CSS/JS for minimal bundle size and fast load.
2. **Flask API**: Lightweight Python backend, ideal for ML model serving.
3. **Supabase**: Managed PostgreSQL with built-in auth, RLS, and realtime — eliminates custom backend for CRUD.
4. **Docker**: Ensures model dependencies are pre-cached at build time (no runtime downloads).
5. **HuggingFace Spaces**: Free GPU/CPU hosting optimized for ML model serving.
## Extension Points
- Additional NLP models can be added via `ModelLoader` without changing the API structure.
- New Supabase tables follow the same RLS pattern.
- Frontend pages follow a `showPage()` pattern for easy addition.