# 📚 Ebook Translation System - Slovenský Návod ## 🎯 Čo je tento projekt? Komplexný **systém na správu prekladov e-kníh** pozostávajúci z 3 častí: 1. **Backend API** (FastAPI) - Správa kupónových kódov a prekladových súborov 2. **Admin Dashboard** (Webové rozhranie) - Správa kupónov a nahrávanie prekladov 3. **Chrome Extension** - Automatická aplikácia prekladov na stránky e-kníh --- ## 🐳 Docker Deployment (Coolify) ### Čo budete potrebovať: - ✅ Server s nainštalovaným Coolify - ✅ Docker a Docker Compose (už je v Coolify) - ✅ Prístup k serveru cez SSH - ✅ Doména alebo subdoména (voliteľné, ale odporúčané) --- ## 📦 Štruktúra Docker stacku ``` ┌─────────────────────────────────────────┐ │ Coolify Deployment │ ├─────────────────────────────────────────┤ │ │ │ ┌──────────────────────────────────┐ │ │ │ Nginx Reverse Proxy │ │ │ │ (Port 80/443) │ │ │ └──────────────┬───────────────────┘ │ │ │ │ │ ┌──────────────▼───────────────────┐ │ │ │ Backend + Frontend │ │ │ │ (FastAPI + Static Files) │ │ │ │ Port: 8000 │ │ │ └──────────────┬───────────────────┘ │ │ │ │ │ ┌──────────────▼───────────────────┐ │ │ │ PostgreSQL Database │ │ │ │ Port: 5432 (internal) │ │ │ └──────────────────────────────────┘ │ │ │ └─────────────────────────────────────────┘ ``` --- ## 🚀 Krok za krokom - Nasadenie na Coolify ### **KROK 1: Príprava súborov** Všetky potrebné súbory sú už pripravené v projekte: - `Dockerfile` - Definícia Docker obrazu pre backend - `docker-compose.yml` - Orchestrácia všetkých služieb - `.env.production` - Produkčná konfigurácia - `.dockerignore` - Čo vylúčiť z Docker obrazu ### **KROK 2: Nastavenie premenných prostredia** V Coolify nastavte tieto environment variables: ```bash # Database DATABASE_URL=postgresql://ebook_user:SILNE_HESLO_123@postgres:5432/ebook_prod # Security SECRET_KEY=vygenerovany-tajny-kluc-min-32-znakov-ZMENTE-TO DEBUG=false ENVIRONMENT=production # Admin prístup (ZMEŇTE!) ADMIN_USERNAME=admin ADMIN_PASSWORD=VaseSilneHeslo123! # CORS - Vaša doména CORS_ORIGINS=https://vasa-domena.sk,https://www.vasa-domena.sk TRUSTED_HOSTS=vasa-domena.sk,www.vasa-domena.sk # Aplikácia APP_NAME=Ebook Translation System APP_VERSION=1.0.0 LOG_LEVEL=WARNING # Server HOST=0.0.0.0 PORT=8000 # PostgreSQL (pre databázový kontajner) POSTGRES_USER=ebook_user POSTGRES_PASSWORD=SILNE_HESLO_123 POSTGRES_DB=ebook_prod ``` ### **KROK 3: Nasadenie v Coolify** #### Možnosť A: Git Repository (Odporúčané) 1. **Nahrajte projekt na Git** (GitHub, GitLab, atď.) 2. **V Coolify:** - Kliknite na "New Resource" - Vyberte "Docker Compose" - Pripojte váš Git repozitár - Nastavte branch (napr. `main`) - Coolify automaticky detekuje `docker-compose.yml` 3. **Nastavte Environment Variables:** - V Coolify prejdite na Environment - Pridajte všetky premenné vyššie - Uložte 4. **Nastavte Domain:** - V Coolify prejdite na Domains - Pridajte vašu doménu (napr. `ebook.vasa-domena.sk`) - Povoľte SSL (Let's Encrypt) 5. **Deploy:** - Kliknite "Deploy" - Coolify stiahne kód, buildne Docker obrazy a spustí kontajnery #### Možnosť B: Manuálne cez SSH ```bash # 1. Pripojte sa na server ssh user@vas-server.sk # 2. Vytvorte adresár pre projekt mkdir -p /srv/ebook-system cd /srv/ebook-system # 3. Skopírujte súbory (použite scp alebo git clone) git clone https://github.com/vase-repo/ebook-system.git . # 4. Vytvorte .env súbor nano .env.production # Vložte konfiguráciu z KROK 2 # 5. Spustite Docker Compose docker-compose up -d # 6. Skontrolujte stav docker-compose ps docker-compose logs -f ``` ### **KROK 4: Overenie nasadenia** ```bash # Skontrolujte health endpoint curl https://vasa-domena.sk/health # Očakávaná odpoveď: # { # "status": "healthy", # "database_status": "connected", # "version": "1.0.0", # "environment": "production" # } ``` ### **KROK 5: Prvé prihlásenie** 1. Otvorte prehliadač: `https://vasa-domena.sk/login` 2. Prihláste sa s credentials z `.env`: - Username: `admin` (alebo čo ste nastavili) - Password: Vaše heslo z `ADMIN_PASSWORD` 3. **DÔLEŽITÉ:** Po prvom prihlásení zmeňte heslo! --- ## 🔧 Konfigurácia Chrome Extension ### **KROK 1: Upravte API URL v Extension** ```bash # Otvorte súbor config.js v extension adresári nano ebook_extension/config.js ``` Zmeňte API URL na vašu produkčnú doménu: ```javascript export const CONFIG = { API_BASE: "https://vasa-domena.sk", // ← Zmeňte toto! VERIFY_ENDPOINT: "/verify", TRANSLATIONS_ENDPOINT: "/translations/latest", // ... zvyšok ostáva }; ``` ### **KROK 2: Načítanie Extension do Chrome** 1. Otvorte Chrome: `chrome://extensions/` 2. Zapnite **"Developer mode"** (prepínač vpravo hore) 3. Kliknite **"Load unpacked"** 4. Vyberte priečinok: `/home/richardtekula/Documents/WORK/extension/Ebook_System/ebook_extension/` 5. Extension je nainštalovaný! 🎉 ### **KROK 3: Testovanie Extension** 1. Kliknite na ikonu extension v Chrome 2. Zadajte kupónový kód (vygenerovaný v admin paneli) 3. Kliknite "Verify" 4. Ak je kód platný, vyberte jazyk 5. Spustite preklad --- ## 📊 Pracovný tok používania ### **Pre Administrátora:** 1. **Prihlásenie:** - Otvorte `https://vasa-domena.sk/login` - Prihláste sa admin účtom 2. **Generovanie kupónov:** - Prejdite na záložku "Generate" - Vyberte Single (1 kód) alebo Bulk (viacero) - Kliknite "Generate Codes" - Kódy sa automaticky uložia do databázy 3. **Nahranie prekladového súboru:** - Prejdite na záložku "Translation Upload" - Vyberte Excel súbor (.xlsx) - Súbor musí obsahovať stĺpce: `Original`, `Slovak`, `Czech`, atď. - Kliknite "Upload" 4. **Správa kupónov:** - Prezrite zoznam všetkých kupónov - Vyhľadávajte podľa kódu - Vidíte stav použitia (použité/nepoužité) - Môžete mazať kupóny ### **Pre koncového používateľa:** 1. **Inštalácia Extension** (raz) - Nainštalujte Chrome extension - Extension je pripravený na použitie 2. **Verifikácia kupónu:** - Otvorte extension (klik na ikonu) - Zadajte kupónový kód od admina - Kliknite "Verify" - Systém overí kód proti databáze 3. **Výber jazyka:** - Po úspešnej verifikácii vyberte cieľový jazyk - Kliknite "Start Translation" 4. **Automatický preklad:** - Extension stiahne prekladový súbor - Automaticky identifikuje sekcie na stránke - Aplikuje preklady - Zvýrazní preložené sekcie - Pridá poznámky s prekladmi - Automaticky prejde na ďalšiu stránku --- ## 🔐 Bezpečnosť a Best Practices ### **Pred spusteným v produkcii:** - [ ] Zmeňte `ADMIN_PASSWORD` na silné heslo (min. 16 znakov) - [ ] Vygenerujte nový `SECRET_KEY` (použite: `openssl rand -base64 32`) - [ ] Nastavte `DEBUG=false` - [ ] Nastavte `ENVIRONMENT=production` - [ ] Aktualizujte `CORS_ORIGINS` na vašu konkrétnu doménu - [ ] Povoľte SSL/HTTPS (Coolify to robí automaticky cez Let's Encrypt) - [ ] Nastavte firewall pravidlá - [ ] Zálohujte databázu (nastavte automatické zálohy) ### **Generovanie bezpečných kľúčov:** ```bash # SECRET_KEY generovanie python3 -c "import secrets; print(secrets.token_urlsafe(32))" # Alebo pomocou openssl openssl rand -base64 32 ``` --- ## 🛠️ Údržba a Monitoring ### **Docker príkazy:** ```bash # Zobraziť stav kontajnerov docker-compose ps # Zobraziť logy docker-compose logs -f # Zobraziť logy len backend docker-compose logs -f backend # Zobraziť logy len databáza docker-compose logs -f postgres # Reštartovať všetky služby docker-compose restart # Reštartovať len backend docker-compose restart backend # Zastaviť všetko docker-compose down # Zastaviť a zmazať volumes (POZOR: zmaže databázu!) docker-compose down -v # Znovu buildiť a spustiť docker-compose up -d --build ``` ### **Zálohovanie databázy:** ```bash # Vytvoriť zálohu docker-compose exec postgres pg_dump -U ebook_user ebook_prod > backup_$(date +%Y%m%d).sql # Obnoviť zo zálohy docker-compose exec -T postgres psql -U ebook_user ebook_prod < backup_20250111.sql ``` ### **Sledovanie logov aplikácie:** ```bash # Real-time logy docker-compose logs -f backend # Posledných 100 riadkov docker-compose logs --tail=100 backend # Logy s časovými pečiatkami docker-compose logs -f -t backend # Hľadať chyby v logoch docker-compose logs backend | grep -i error ``` --- ## 🐛 Riešenie problémov ### **Backend sa nespustí:** ```bash # Skontrolujte logy docker-compose logs backend # Skontrolujte environment variables docker-compose config # Reštartujte kontajner docker-compose restart backend ``` ### **Databáza nie je dostupná:** ```bash # Skontrolujte či PostgreSQL beží docker-compose ps postgres # Skontrolujte logy databázy docker-compose logs postgres # Reštartujte databázu docker-compose restart postgres # Pripojte sa do databázy docker-compose exec postgres psql -U ebook_user -d ebook_prod ``` ### **Extension nemôže kontaktovať backend:** 1. **Skontrolujte CORS nastavenia** v `.env`: ```bash CORS_ORIGINS=https://vasa-domena.sk ``` 2. **Overte že backend beží:** ```bash curl https://vasa-domena.sk/health ``` 3. **Skontrolujte config.js v extension:** ```javascript API_BASE: "https://vasa-domena.sk" // Správna URL? ``` 4. **Pozrite Browser Console** (F12): - Hľadajte CORS chyby - Hľadajte network chyby ### **SSL certifikát nefunguje:** V Coolify: 1. Prejdite na "Domains" 2. Kliknite "Regenerate Certificate" 3. Počkajte 1-2 minúty 4. Testujte znovu --- ## 📈 Monitoring a Štatistiky ### **Health Check Endpoint:** ```bash # Základný health check curl https://vasa-domena.sk/health # Detailný výstup curl -s https://vasa-domena.sk/health | jq ``` ### **Štatistiky kupónov:** ```bash # Pripojte sa do databázy docker-compose exec postgres psql -U ebook_user -d ebook_prod # SQL dotazy: -- Celkový počet kupónov SELECT COUNT(*) FROM coupon_codes; -- Použité vs nepoužité SELECT COUNT(*) FILTER (WHERE usage_count > 0) as used, COUNT(*) FILTER (WHERE usage_count = 0) as unused FROM coupon_codes; -- Posledných 10 použitých kupónov SELECT code, used_at FROM coupon_codes WHERE usage_count > 0 ORDER BY used_at DESC LIMIT 10; ``` --- ## 🔄 Update a Upgrade ### **Aktualizácia kódu:** ```bash # Ak používate Git cd /srv/ebook-system git pull origin main # Rebuild a reštart docker-compose up -d --build ``` ### **Aktualizácia databázovej schémy:** ```bash # Spustite migračný skript (ak existuje) docker-compose exec backend python init_db.py ``` --- ## 📞 Podpora a Dokumentácia ### **Súbory dokumentácie:** - `SYSTEM_DOCUMENTATION.md` - Kompletná systémová dokumentácia - `README.md` - Anglická dokumentácia - `NAVOD_SLOVENSKY.md` - Tento súbor ### **Logy:** - Aplikačné logy: `docker-compose logs backend` - Databázové logy: `docker-compose logs postgres` - Nginx logy: V Coolify pod "Logs" ### **API Dokumentácia:** - Swagger UI: `https://vasa-domena.sk/docs` - ReDoc: `https://vasa-domena.sk/redoc` --- ## ✅ Checklist pre produkčné nasadenie ### **Pred spustením:** - [ ] PostgreSQL databáza je vytvorená - [ ] Environment variables sú nastavené - [ ] `ADMIN_PASSWORD` je zmenený - [ ] `SECRET_KEY` je vygenerovaný - [ ] `DEBUG=false` - [ ] `ENVIRONMENT=production` - [ ] Doména je nakonfigurovaná - [ ] SSL certifikát je aktívny - [ ] CORS je nastavený správne - [ ] Firewall pravidlá sú nastavené ### **Po spustení:** - [ ] Health endpoint odpovedá (200 OK) - [ ] Admin prihlásenie funguje - [ ] Generovanie kupónov funguje - [ ] Nahrávanie prekladov funguje - [ ] Extension sa vie pripojiť k backendu - [ ] Verifikácia kupónov funguje - [ ] Preklad funguje - [ ] Zálohy sú nastavené --- ## 🎓 Užitočné príkazy ```bash # Zobraziť všetky bežiace kontajnery docker ps # Zobraziť použité resources docker stats # Vyčistiť nepoužívané obrazy docker system prune -a # Export databázy docker-compose exec postgres pg_dump -U ebook_user ebook_prod > backup.sql # Import databázy cat backup.sql | docker-compose exec -T postgres psql -U ebook_user ebook_prod # Sledovať logy v real-time docker-compose logs -f --tail=100 # Vstúpiť do backend kontajnera docker-compose exec backend bash # Vstúpiť do databázového kontajnera docker-compose exec postgres psql -U ebook_user ebook_prod ``` --- ## 🚀 Hotovo! Váš Ebook Translation System je teraz nasadený a pripravený na používanie! **Čo ďalej?** 1. Prihláste sa do admin panelu 2. Vygenerujte prvé kupóny 3. Nahrajte prekladový súbor 4. Otestujte Chrome extension 5. Rozdajte kupóny používateľom **Tešíme sa na vašu spätnú väzbu!** 🎉