Lokalne środowisko — Development Setup
Wymagania
| Narzędzie | Wersja | Przeznaczenie |
|---|---|---|
| Bun | 1.x+ | Backend runtime (Master Bot, Child Bot, MCP) |
| Node.js | 22+ | Build frontendu (npm) |
| Docker | Latest | Opcjonalnie — do konteneryzacji |
| Git | Latest | Repozytorium |
Szybki start
git clone [email protected]:SerhiiInUa/citadel-v2.git
cd citadel-v2
cp .env.example .env
# Edytuj .env — dodaj tokeny botów
# Jednorazowo: aktywuj pre-push hook doc-coverage (Phase 49.1)
bash scripts/setup-hooks.sh
Dlaczego hook: blokuje
git push, gdy zmieniasz kod bez aktualizacji dokumentów. Bypass:git push --no-verify. Szczegóły — sekcja „Documentation Law" wCLAUDE.md.
Frontend
cd frontend
npm install
npm run dev # → http://localhost:5173
Vite automatycznie proksuje:
/api/crm/*→http://localhost:19210(Master Bot)/api/*→http://localhost:19200(MCP Server)/ws/*→ WebSocket przezhttp://localhost:19200
Komendy budowania
npm run dev— serwer dev z hot reloadnpm run build— build produkcyjny →dist/npm run i18n:extract— wyodrębnij nowe ciągi tłumaczeńnpm run i18n:compile— skompiluj tłumaczenia (obowiązkowo przed build)
Backend
Master Bot (CRM API)
cd master-bot
bun install
bun run bot.ts # → http://localhost:19210
To jest główny serwer API z 68+ endpointami. Wymaga MASTER_BOT_TOKEN w .env.
Child Bot (AI Proxy)
cd child-bot
bun install
bun run bot.ts # → http://localhost:19211
Proxy Telegram ↔ Claude CLI dla każdego projektu. Wymaga CITADEL_BOT_TOKEN w .env.
MCP State Bridge
cd mcp-server
bun install
bun run server.ts # → http://localhost:19200
Menedżer stanu, SSE, WebSocket.
Porty
| Port | Serwis | Opis |
|---|---|---|
| 5173 | Vite Dev Server | Frontend + proxy API |
| 19200 | MCP State Bridge | Stan, SSE, WebSocket |
| 19210 | Master Bot | CRM API (68+ endpointów) |
| 19211 | Child Bot | Health check |
| 18888 | Nginx (VPS) | Tylko produkcja |
| 18889 | Nginx (Docker) | Frontend Docker |
Zmienne środowiskowe (.env)
Wymagane
MASTER_BOT_TOKEN=... # Telegram @BotFather
CRM_ALLOWED_ORIGINS=http://localhost:5173
Dla pełnej funkcjonalności
CITADEL_BOT_TOKEN=... # Token Child bota
GITHUB_CLIENT_ID=... # GitHub OAuth
GITHUB_CLIENT_SECRET=...
GOOGLE_CLIENT_ID=... # Google OAuth
GOOGLE_CLIENT_SECRET=...
Opcjonalne
HEALTH_PORT=19210
CITADEL_DIR=/path/to/citadel-v2
EMAIL_PROVIDER=console # 'console' do dev (wypisuje w terminalu)
[email protected]
Docker (opcjonalnie)
# Pełny stos
docker compose -f docker/docker-compose.yml up -d --build
# Tylko frontend
docker compose -f docker/docker-compose.yml up -d frontend
Struktura projektu
citadel-v2/
├── master-bot/ # Orkiestrator Telegram + CRM API (:19210)
├── child-bot/ # Proxy AI dla każdego projektu (:19211)
├── mcp-server/ # State bridge (:19200)
├── shared/ # Wspólny kod (db, auth, routes, migrations)
├── frontend/ # React CRM + Phaser (Vite)
├── clients/ # ARC CLI
├── services/ # NotebookLM Bridge (Python)
├── config/ # Registry, vault, workerzy
├── skills/ # Definicje skillów + evals
├── docker/ # Compose + Dockerfiles + Nginx
├── infra/nginx/ # Konfiguracja Nginx VPS
├── scripts/ # Skrypty deploy i build
├── docs/ # Dokumentacja
└── data/ # SQLite DB (tworzona automatycznie)
Typowy workflow dewelopera
- Uruchom frontend:
cd frontend && npm run dev - Uruchom Master Bot:
cd master-bot && bun run bot.ts - Otwórz
http://localhost:5173 - Zarejestruj się przez email (email_provider=console → kod w terminalu)
- Utwórz projekt przez UI
- Pracuj z workerami przez Workspace
Szybkie sprawdzanie typów
cd master-bot && bun build --no-bundle bot.ts # Sprawdź typy backendu
cd frontend && npx vite build # Sprawdź typy + build frontendu
Troubleshooting
| Problem | Rozwiązanie |
|---|---|
| Port already in use | lsof -i :19210 → kill <PID> |
| Błąd CORS | Sprawdź CRM_ALLOWED_ORIGINS w .env |
| Frontend nie widzi API | Sprawdź czy Master Bot działa na :19210 |
| Bun nie znajduje modułów | bun install w odpowiednim katalogu |
| Błędy i18n | cd frontend && npm run i18n:compile |