Consolidate 3 separate applications (reports-app, data-entry-app, telegram-bot) into a unified
architecture with single backend and frontend:
Backend Changes:
- Unified FastAPI backend at backend/ with modular structure
- Modules: reports, data_entry, telegram in backend/modules/
- Centralized config.py and main.py with all routers registered
- Single worker mode (--workers 1) for Telegram bot compatibility
- Shared Oracle connection pool and JWT authentication
- Unified requirements.txt and environment configuration
Frontend Changes:
- Single Vue.js SPA with module-based routing
- Unified frontend at src/ with modules in src/modules/{reports,data-entry}/
- Shared components and stores in src/shared/
- Error boundaries for module isolation
- Dual API proxy in Vite for module communication
Infrastructure:
- New unified startup scripts: start-prod.sh, start-test.sh, start-backend.sh
- Environment templates: .env.dev.example, .env.test.example, .env.prod.example
- Updated deployment scripts for Windows IIS
- Simplified SSH tunnel management
Documentation:
- Comprehensive CLAUDE.md with architecture overview
- Module-specific docs in docs/{data-entry,telegram}/
- Architecture decision records in docs/ARCHITECTURE-DECISIONS.md
- Deployment guides consolidated in deployment/windows/docs/
This migration reduces complexity, improves maintainability, and enables easier
deployment while maintaining all existing functionality.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
ROA2WEB Scripts - Secrets Management
Backup & Restore Environment Secrets
Aceste script-uri ajută la backup-ul securizat (criptat) al fișierelor .env și .env.prod care conțin credențiale sensibile.
🔐 Backup Secrets
Creează backup criptat cu AES256:
./scripts/backup-secrets.sh
Ce face:
- Găsește toate fișierele
.envși.env.prod - Le criptează cu GPG (AES256)
- Le salvează în
secrets-backup/YYYY-MM-DD_HH-MM-SS/ - Creează README cu instrucțiuni
Rezultat:
secrets-backup/
└── 2025-01-15_14-30-00/
├── .env.gpg
├── .env.prod.gpg
└── README.md
Notă: Vei fi rugat să introduci o parolă pentru criptare. Salvează această parolă în gestionar de parole!
🔓 Restore Secrets
Restaurează din backup criptat:
# Restaurează din ultimul backup
./scripts/restore-secrets.sh
# Restaurează din backup specific
./scripts/restore-secrets.sh 2025-01-15_14-30-00
Ce face:
- Decriptează fișierele .gpg din backup
- Le plasează înapoi în locațiile originale
- reports-app/backend/.env
- reports-app/backend/.env.prod
- reports-app/telegram-bot/.env
- reports-app/telegram-bot/.env.prod
Notă: Vei fi rugat să introduci parola de decriptare.
🗂️ Opțiuni de Salvare a Backup-urilor
Opțiunea 1: Commit în Git (Recomandat)
Fișierele .gpg sunt criptate și pot fi comise în siguranță:
# Creează backup
./scripts/backup-secrets.sh
# Adaugă în git
git add secrets-backup/
git commit -m "Add encrypted secrets backup"
git push
Avantaje:
- Sincronizat automat cu remote
- Versioning complet
- Acces de pe orice mașină
- Sigur (criptat cu parolă)
Dezavantaje:
- Trebuie să ții minte parola
Opțiunea 2: Backup Local (Doar Local)
Păstrează backup-urile doar pe mașina locală:
# Decomentează în .gitignore:
# secrets-backup/
# Copiază backup-urile pe USB/cloud manual
cp -r secrets-backup /mnt/usb/roa2web-secrets-backup
Opțiunea 3: Gestionar de Parole
Pentru backup manual rapid:
# Copiază conținutul și salvează în Bitwarden/1Password
cat reports-app/backend/.env
cat reports-app/backend/.env.prod
cat reports-app/telegram-bot/.env
cat reports-app/telegram-bot/.env.prod
🔒 Best Practices
-
Rulează backup înaintea deployment-ului:
./scripts/backup-secrets.sh git add secrets-backup/ git commit -m "Backup secrets before deployment" -
Salvează parola de criptare în gestionar de parole:
- Bitwarden: Secure Note "ROA2WEB GPG Backup Password"
- 1Password: Document "ROA2WEB Secrets Password"
- LastPass: Secure Note
-
Testează restore periodic:
# Backup ./scripts/backup-secrets.sh # Șterge temporar mv reports-app/backend/.env reports-app/backend/.env.backup # Restore ./scripts/restore-secrets.sh # Verifică diff reports-app/backend/.env reports-app/backend/.env.backup -
Pentru echipă:
- Partajează parola GPG în gestionar de parole partajat
- Sau folosește chei GPG separate pentru fiecare membru
🚨 Troubleshooting
"gpg: decryption failed: Bad session key"
- Parola introdusă este greșită
- Verifică în gestionar de parole
"No such file or directory"
- Asigură-te că rulezi script-ul din root-ul proiectului:
cd /path/to/roa2web ./scripts/backup-secrets.sh
"gpg: command not found"
# Ubuntu/Debian
sudo apt-get install gnupg
# Windows WSL
sudo apt-get install gnupg
📋 Alternative de Backup
1. Manual GPG (un fișier):
gpg --symmetric --cipher-algo AES256 reports-app/backend/.env
# Rezultat: .env.gpg
2. Tar + GPG (toate odată):
tar -czf - reports-app/*/.env* | gpg --symmetric --cipher-algo AES256 > secrets-backup.tar.gz.gpg
3. Ansible Vault:
ansible-vault encrypt reports-app/backend/.env.prod
📝 Deployment pe Windows Server
Pentru deployment pe Windows, copiază fișierele .env.prod:
# Linux/WSL -> Windows Server
# 1. Creează backup local
./scripts/backup-secrets.sh
# 2. Copiază backup-ul pe server Windows
scp -r secrets-backup/latest/ administrator@server-ip:C:/temp/
# 3. Pe server Windows, decriptează:
gpg --decrypt .env.prod.gpg > C:\inetpub\wwwroot\roa2web\backend\.env.prod
gpg --decrypt .env.prod.gpg > C:\inetpub\wwwroot\roa2web\telegram-bot\.env.prod
🔗 Vezi și
.gitignore- Pattern-uri pentru .env filesDEPLOYMENT_GUIDE.md- Deployment productiondeployment/windows/docs/WINDOWS_DEPLOYMENT.md- Windows deployment