ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ. Π‘ΠΎΠ±ΠΈΡΠ°ΠΉ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉ. ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠΉ.
Event-driven, context-aware, AI-orchestrated monorepo Π½Π° Go + React + Python. Π‘ΠΎΠ±ΠΈΡΠ°ΠΉ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΡΡΠ΅Π½Ρ ΠΈΠ· LEGO-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: ΡΠΈΠ½Π°Π½ΡΡ, ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ, ΡΡΠ΅ΠΊΠ΅Ρ, Π·Π½Π°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅ΡΠ΅ ΠΆΠΈΠ·Π½ΠΈ (personal, family, business, health), Π½ΠΎ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠΎΡΡΡΡ ΡΠ΅ΡΠ΅Π· EventBus ΠΈ AI.
- LEGO-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°: ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ, ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· EventBus
- Event-First: Π½ΡΠ»Π΅Π²Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ, Π»ΡΠ³ΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π°Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ:
personal!=family!=business, Π½ΠΎ ΡΠ²ΡΠ·ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· AI - ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ AI: OpenAI Π΄Π»Ρ MVP -> Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°
- ΠΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΈΡ
- ΠΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄: Telegram Mini App -> PWA -> ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ -> Π΄Π΅ΡΠΊΡΠΎΠΏΡ
Frontend Layer
|
Transport Layer (Telegram Bot API / HTTP / WebSocket)
|
Core Layer (EventBus | Orchestrator | AI Engine | State)
|
Domain Modules (finance | calendar | tracker | knowledge | ...)
|
Data Layer (PostgreSQL | Redis | Vector DB | Local Storage)
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
core/events/- EventBus Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡcore/distributed/- foundation Π΄Π»Ρ broker-backed lanes ΠΈ consumer groupscore/orchestrator/- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ AIcore/aiengine/- Π Π΅Π΅ΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡplugins/- versioned registry Π΄Π»Ρ process/WASM plugin manifests Ρ entry/permission guardrails- Domain ΠΌΠΎΠ΄ΡΠ»ΠΈ - ΠΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
- ΠΡΠΎΠ΅ΠΊΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°
- ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ
- ΠΠ°ΡΡΠΈΡΠ° ΡΠΎΠ±ΡΡΠΈΠΉ v1
- AI-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
- Metrics / Observability
- Frontend-ΡΡΠ°Π½Π΄Π°ΡΡΡ
| Operation \ Context | personal | family | business | health | travel | pets |
|---|---|---|---|---|---|---|
| finance | Π±ΡΠ΄ΠΆΠ΅Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ | ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΠ΅ ΡΡΠ°ΡΡ | ΠΏΡΠΈΠ±ΡΠ»Ρ/ΡΠ°ΡΡ ΠΎΠ΄Ρ | ΡΡΡΠ°Ρ ΠΎΠ²ΠΊΠΈ, ΠΠΠΡ | Π±ΠΈΠ»Π΅ΡΡ, Π²ΠΈΠ·Ρ | Π²Π΅ΡΠΊΠ»ΠΈΠ½ΠΈΠΊΠ°, ΠΊΠΎΡΠΌ |
| calendar | Π»ΠΈΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ | ΠΊΡΡΠΆΠΊΠΈ, ΡΠΆΠΈΠ½Ρ | Π²ΡΡΡΠ΅ΡΠΈ, Π΄Π΅Π΄Π»Π°ΠΉΠ½Ρ | ΠΏΡΠΈΡΠΌΡ Π²ΡΠ°ΡΠ° | Π²ΡΠ»Π΅ΡΡ, ΡΠΊΡΠΊΡΡΡΠΈΠΈ | ΠΏΡΠΈΠ²ΠΈΠ²ΠΊΠΈ, ΠΏΡΠΎΠ³ΡΠ»ΠΊΠΈ |
| tracker | ΠΏΡΠΈΠ²ΡΡΠΊΠΈ, ΡΠ΅Π»ΠΈ | Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠ΅ Π΄Π΅Π»Π° | ΡΠΏΡΠΈΠ½ΡΡ, OKR | ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΊΠΈ, Π΄ΠΈΠ΅ΡΠ° | ΡΠ΅ΠΊ-Π»ΠΈΡΡΡ ΡΠ±ΠΎΡΠΎΠ² | ΡΡ ΠΎΠ΄, Π΄ΡΠ΅ΡΡΠΈΡΠΎΠ²ΠΊΠ° |
| knowledge | Π΄Π½Π΅Π²Π½ΠΈΠΊ, ΠΈΠ΄Π΅ΠΈ | ΡΠ΅ΡΠ΅ΠΏΡΡ, ΠΏΡΠ°Π²ΠΈΠ»Π° | ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΡ, Π³Π°ΠΉΠ΄Ρ | ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ, ΡΠΈΠΌΠΏΡΠΎΠΌΡ | Π³ΠΈΠ΄Ρ, ΡΡΠ°Π·Ρ | ΠΏΠΎΡΠΎΠ΄Π°, ΡΠ°ΡΠΈΠΎΠ½ |
| contacts | Π΄ΡΡΠ·ΡΡ, ΡΠΊΡΠΏΠ΅ΡΡΡ | ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ, ΡΡΠΈΡΠ΅Π»Ρ | ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, ΠΊΠ»ΠΈΠ΅Π½ΡΡ | ΡΡΠ΅Π½Π΅ΡΡ, Π²ΡΠ°ΡΠΈ | Π³ΠΈΠ΄Ρ, ΠΏΠΎΠΏΡΡΡΠΈΠΊΠΈ | Π²Π΅ΡΠ΅ΡΠΈΠ½Π°ΡΡ, Π³ΡΡΠΌΠ΅ΡΡ |
ΠΡΠΈΠΌΠ΅Ρ ΠΊΡΠΎΡΡ-ΡΠ²ΡΠ·ΠΈ:
ΠΠ°ΠΌΠ΅ΡΠΊΠ°: "ΠΡΠΏΠΈΡΡ ΠΌΠΎΠ»ΠΎΠΊΠΎ ΠΏΠΎ ΠΏΡΡΠΈ Π΄ΠΎΠΌΠΎΠΉ" -> AI ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΈΠ½ΡΠ΅Π½Ρ ->
calendar/ ΡΡΠ°Π²ΠΈΡ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ + finance/ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ Π±ΡΠ΄ΠΆΠ΅Ρ +
logistics/ ΡΡΡΠΎΠΈΡ ΠΌΠ°ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π³Π°Π·ΠΈΠ½ -> Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² EventBus.
ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ: Remote API (MVP) <-> Local Models (Prod)
| Component | Task | Technologies |
|---|---|---|
| AI Gateway | ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², PII-ΡΠ΅Π΄Π°ΠΊΡΠΈΡ | Go, gRPC, middleware |
| Model Registry | Π Π΅Π΅ΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, health-checks | YAML config, Prometheus |
| Domain Services | Π€ΠΈΠ½Π°Π½ΡΡ, Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅, Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠ°, Π·Π½Π°Π½ΠΈΡ | Python, FastAPI, scikit-learn, ONNX |
| Feedback Loop | ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ΄Π±Π΅ΠΊΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ confidence | Async queue, batch training |
| Vector Memory | ΠΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΈ | Chroma/Qdrant, embeddings |
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ:
- ΠΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ PII-ΡΠ΅Π΄Π°ΠΊΡΠΈΡ
scope-ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ: Π΄Π°Π½Π½ΡΠ΅personalΠ½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²business- ΠΡΠΈ
auth_requiredΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ Π½Π΅ dispatch'ΠΈΡ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅v1.*Π±Π΅Π· Π²Π°Π»ΠΈΠ΄Π½ΡΡ ΡΠΎΠ»Π΅ΠΉ;guestΠ΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΡΠΎΠ±ΡΡΠΈΡΠΌ confidence < 0.7-> ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ- ΠΠΎΠ³ΠΈ Π±Π΅Π· ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π°ΡΠ΄ΠΈΡ Π²ΡΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
ΠΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠΈΠ»Π΅Π½ΠΈΠ΅: ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄ -> Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
| Platform | Status | Technologies |
|---|---|---|
| Telegram Mini App | MVP | React, @twa-dev/sdk, Vite |
| PWA (Web) | v2.0 foundation |
React, Vite PWA, local control plane snapshot |
| iOS / Android | ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ | React Native + Capacitor |
| Desktop (Win/macOS/Linux) | ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ | Tauri (Rust + React) |
| Wearables (watchOS/Wear OS) | ΠΠ΄Π΅Ρ | ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ |
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ: ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΠΉ ΡΡΠ΅ΡΡ ΠΆΠΈΠ·Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ
Control Plane: broker lanes, plugin registry ΠΈ scope presets ΡΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡΡΡΡ Π² web-ΡΠ»ΠΎΠ΅ Π±Π΅Π· ΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π°; ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ web/PWA ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Go-backed operator API (cmd/controlplane), Π° Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ snapshot Π΄Π»Ρ backend ΠΈ local fallback Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌcontrolplane/default_snapshot.json. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΊΡΠ°Π½ dashboard ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ operator diagnostics ΠΈΠ·/api/health: mode, snapshot freshness, persist path ΠΈ plugin manifest source/count, Π° module/plugin cards ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· UI.- ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ: ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ
- ΠΡΠ»Π°ΠΉΠ½-ΠΏΠ΅ΡΠ²ΡΠΉ: ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠΈ
- ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ UI: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ = Π±ΡΠΊΠ΅Π½Π΄-ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ 90%+
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
- Go 1.21+
- Node.js 18+ / npm 9+
- Docker + Docker Compose (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ AI-ΡΡΠ΅ΠΊΠ°)
- PostgreSQL 15+ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Supabase free tier)
git clone https://github.com/ezhigval/Go_Assist.git
cd Go_Assist# Π‘ΠΊΠΎΠΏΠΈΡΡΠΉ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ²
cp .env.example .env
cp config/config.example.yaml config/config.yaml
# ΠΠ°ΠΏΠΎΠ»Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°):
# TELEGRAM_TOKEN=your_bot_token
# DB_HOST=localhost
# DB_PORT=5432
# DB_NAME=telegram_bot
# DB_USER=postgres # Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ quick start
# DB_PASS=
# DB_SSLMODE=disable
# DB_REQUIRE_RLS_EFFECTIVE=false # staging/production: true ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° app role
# AI_PROVIDER=local # ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Ρ unset/"stub" Π΄Π»Ρ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ fallback
# AI_PROVIDER_BASE_URL=http://127.0.0.1:8000
# AI_ALLOW_STUB_FALLBACK=true
#
# ΠΠ»Ρ RLS-effective transport/databases setup:
# go run ./databases/cmd/databases app-role-sql -role=modulr_app
# ΠΡΠΏΠΎΠ»Π½ΠΈ SQL ΠΏΠΎΠ΄ DBA/owner role, Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈ DB_USER/DB_PASS
# Π·Π°ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈ DB_REQUIRE_RLS_EFFECTIVE=true
# ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡ go run ./databases/cmd/databases rls-status -require-effective
# ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ readiness ΠΏΠΎ event_journal/stats/sessions/auth_sessions
#
# ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ transport auth:
# TELEGRAM_AUTH_REQUIRED=true
# TELEGRAM_AUTH_ADMIN_IDS=12345,67890
# TELEGRAM_AUTH_ALLOWED_SCOPES=business,travelcd core
go mod tidy
go run main.go
# Runtime ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅Ρ orchestrator + bus bridge + Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ
# ΠΈ ΠΏΡΠΎΠ³ΠΎΠ½ΠΈΡ demo-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠΈΠΉ message flow
# Π Π»ΠΎΠ³Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ²ΡΡΡΡ scope_counts ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ trace-summary ΠΈΠ· metrics/ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ:
MODULR_DEMO_TEXT="Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΊΡΠΏΠΈΡΡ ΠΌΠΎΠ»ΠΎΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ" \
MODULR_DEMO_SCOPE=personal \
go run main.gocd frontend
npm install
npm run dev:telegram
# ΠΡΠΊΡΠΎΠΉ Π±ΠΎΡΠ° Π² Telegram -> Π½Π°ΠΆΠΌΠΈ "ΠΠ°ΠΏΡΡΡΠΈΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅"ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ web/PWA operator flow Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ backend projection:
go run ./cmd/controlplane
# ΠΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ /api/health, /api/scopes, /api/control-plane Π½Π° :8080
# /api/health Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ operator status: mode, snapshot freshness, persist path, plugin manifest metadata
# frontend ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΡ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ΅Π· VITE_API_BASE_URL=http://localhost:8080/api
# ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ operator state Π² data/controlplane/snapshot.json
# ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΡΠ°Π΅Ρ demo plugin manifests ΠΈΠ· plugins/manifests
# ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ POST /api/control-plane/plugins/reload Π΄Π»Ρ runtime refresh manifests Π±Π΅Π· ΡΠ΅ΡΡΠ°ΡΡΠ° backend
# ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΡΠ΅Π· CONTROL_PLANE_STATE_PATH=/abs/or/relative/path.json
# ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ manifest source ΡΠ΅ΡΠ΅Π· CONTROL_PLANE_PLUGIN_DIR=/path/to/manifestscd databases
DB_AUTO_MIGRATE=false go run ./cmd/databases up
go run ./cmd/databases status
cd ../telegram
go mod tidy
go run ./cmd/telegram
# Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ TELEGRAM_TOKEN
# /start ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡ
ΠΎΠ΄ΡΡ Π² runtime ingress ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ
# ΠΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ /scope business (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ segment)
# ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ PostgreSQL-backed transport persistence:
# TELEGRAM_STATE_STORE=postgres DB_HOST=localhost DB_PORT=5432 DB_NAME=telegram_bot DB_USER=modulr_app DB_PASS=...
# ΠΠ»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ superuser bootstrap DB_USER=postgres ΡΠΎΠΆΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π½ΠΎ rls-status ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡ ΠΎ bypass
# ΠΠ»Ρ staging/production: DB_REQUIRE_RLS_EFFECTIVE=true, ΠΈΠ½Π°ΡΠ΅ startup Π½Π΅ Π·Π°ΡΠΈΡΠΈΡ ΠΎΡ bypass ΡΠΎΠ»ΠΈ
# ΠΠ° staging/production Π΄Π΅ΡΠΆΠΈ DB_AUTO_MIGRATE=false ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΠΉ migrations ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ deployment step.
# Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ sessions ΠΈ trace-ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ event_journal ΠΏΠΈΡΡΡΡΡ Π² databases/
# Auth ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DB-backed auth_sessions ΡΠ΅ΡΠ΅Π· databases.NewAuthSessionStore(db)
# ΠΠΎΡΡΡΠΏΠ½Ρ transport-ΠΊΠΎΠΌΠ°Π½Π΄Ρ /login, /whoami, /logout; ΠΏΡΠΈ TELEGRAM_AUTH_REQUIRED=true
# ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΡ auth session Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ scope.
# ingress Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΊΠ°ΠΊ auth_required, Π° orchestrator ΡΠ΅ΠΆΠ΅Ρ dispatch Π±Π΅Π· ΡΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Ρ ΡΠΎΠ»ΡΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.cd ai
docker compose -f docker-compose.local.yml up -d
# ΠΠ°ΠΏΡΡΡΠΈΡ Ollama + FastAPI-ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ°
# ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ core/aiengine:
cd ..
AI_PROVIDER=local AI_PROVIDER_BASE_URL=http://127.0.0.1:8000 go run ./core
# ΠΡΠ»ΠΈ local provider Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΏΡΠΈ AI_ALLOW_STUB_FALLBACK=true runtime ΠΎΡΠΊΠ°ΡΠΈΡΡΡ Π½Π° stub decisions.ΠΠΎΠ»Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
Modulr - eto otkrytyy proyekt, kotoryy razvivayetsya blagodarya soobshchestvu.
ΠΠΎΠ΄ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT.
Π’Ρ ΠΌΠΎΠΆΠ΅ΡΡ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΠΈΡΠ½ΡΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
- ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΎΡΠΊΠ°ΡΡ
- Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ
- ΠΠ΅ Π½Π΅ΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ "ΠΊΠ°ΠΊ Π΅ΡΡΡ"
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π΄ΡΡΡΡ Π½Π° ΡΠ½ΡΡΠ·ΠΈΠ°Π·ΠΌΠ΅. ΠΡΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅:
- GitHub Sponsors
- Open Collective (placeholder)
- Crypto: USDT/TRC20 (placeholder)
Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΠΈΠ΄ΡΡ Π½Π°:
- Π‘Π΅ΡΠ²Π΅ΡΡ ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ Π΄Π΅ΠΌΠΎ/ΡΠ΅ΡΡΠΎΠ²
- Π’ΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ AI-API (Π½Π° ΡΡΠ°ΠΏΠ΅ MVP)
- ΠΠΈΠ·Π°ΠΉΠ½, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ
- ΠΠΏΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ² Π·Π° ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΡΠ΅ΠΌ ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
| Π ΠΎΠ»Ρ | ΠΠ°Π΄Π°ΡΠΈ | Stack |
|---|---|---|
| Go Backend | Π―Π΄ΡΠΎ, EventBus, ΠΌΠΎΠ΄ΡΠ»ΠΈ, gRPC | Go, pgx, context, sync |
| React Frontend | UI, PWA, Telegram Mini App | React, TypeScript, Tailwind |
| Python/AI | ΠΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ, ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ | FastAPI, scikit-learn, ONNX |
| DevOps | Docker, CI/CD, monitoring, deploy | Docker, GH Actions, Prometheus |
| Tech Writer | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΡΠΎΡΠΈΠ°Π»Ρ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ | Markdown, Docusaurus |
| QA / Testing | Π’Π΅ΡΡΡ, Π±Π°Π³-ΡΠ΅ΠΏΠΎΡΡΡ, ΡΠ·Π°Π±ΠΈΠ»ΠΈΡΠΈ | Vitest, Playwright, manual |
Π£ΡΠ»ΠΎΠ²ΠΈΡ:
- Π£Π΄Π°Π»ΡΠ½Π½ΠΎ, Π³ΠΈΠ±ΠΊΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ
- Π Π΅Π°Π»ΡΠ½ΡΠ΅ production-Π·Π°Π΄Π°ΡΠΈ, ΠΌΠ΅Π½ΡΠΎΡΡΡΠ²ΠΎ
- ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΡΠΎΠ°Π΄ΠΌΠ΅ΠΏ
- ΠΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΌΠ΅ΡΡ, Π΄ΠΎΠ»Ρ Π² ΠΏΡΠ΅ΠΌΠΈΡΠΌ-ΠΌΠΎΠ΄ΡΠ»ΡΡ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ)
ΠΠ°ΠΊ Π½Π°ΡΠ°ΡΡ:
- ΠΠ·ΡΡΠΈ PROJECT_RULES.md ΠΈ CONTRIBUTING.md
- ΠΠ°ΠΉΠ΄ΠΈ Π·Π°Π΄Π°ΡΡ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ
good first issue - ΠΠ°ΠΏΠΈΡΠΈ Π² GitHub Discussions ΠΈΠ»ΠΈ Π² Telegram @ezhigval
- Π‘ΠΎΠ·Π΄Π°ΠΉ ΡΠΎΡΠΊ, ΡΠ΄Π΅Π»Π°ΠΉ pull-request
| ΠΡΠ°ΠΏ | Π‘ΡΠ°ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
| ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ | Complete | Π―Π΄ΡΠΎ, ΠΌΠΎΠ΄ΡΠ»ΠΈ, AI, frontend |
| ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ | Complete | ΠΡΠ°Π²ΠΈΠ»Π°, ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΎΠ°Π΄ΠΌΠ΅ΠΏΡ |
| ΠΡΠΎΡΠΎΡΠΈΠΏ ΡΠ΄ΡΠ° | Complete | EventBus, Orchestrator, ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ |
| Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ MVP | In Progress | Telegram Mini App + 3 ΠΌΠΎΠ΄ΡΠ»Ρ (Q1 2025) |
| ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ AI | Planned | ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ + feedback loop (Q2 2025) |
| PWA + ΠΎΡΠ»Π°ΠΉΠ½-ΡΠ΅ΠΆΠΈΠΌ | Planned | (Q3 2025) |
| ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ | Planned | iOS/Android (Q4 2025) |
| Premium-ΠΌΠΎΠ΄ΡΠ»ΠΈ | Planned | ΠΠΎΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ (2026) |
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π½:
- ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Roadmap
- ΠΠ°ΡΡΠΈΡΠ° ΡΠΎΠ±ΡΡΠΈΠΉ v1
- Release Template
- AI Roadmap
- Frontend Roadmap
- ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ°ΠΊΡ: @ezhigval (Telegram)
- ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ: GitHub Discussions
- ΠΠ°Π³-ΡΠ΅ΠΏΠΎΡΡΡ: GitHub Issues
- Email: hello@modulr.dev (placeholder)
- Π‘Π°ΠΉΡ: modulr.dev (placeholder)
ΠΠ΅ ΠΏΠΈΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ±ΠΈΡΠ°ΠΉ ΠΈΡ
.
Modulr - ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ.