Domingo è un clone di Duolingo che permette di imparare qualsiasi lingua. L'app utilizza l'intelligenza artificiale per generare esercizi personalizzati e valutare le risposte.
L'applicazione è frutto di una progettazione volutamente "vibe", non ha intenzioni di essere un'applicazione di imparare le lingue, ma piuttosto un simpatico esperimento per capire come funziona Antigravity di Google.
- 🌍 Supporto multi-lingua completo: Interfaccia tradotta e supporto per qualsiasi combinazione di lingua madre e lingua target
- 🤖 Esercizi generati con AI: Usa OpenAI/Gemini/Claude per creare esercizi unici
- 📚 Vari tipi di esercizi:
- Traduzione (bidirezionale)
- Completamento frasi
- Scelta multipla
- Abbinamento parole
- Comprensione del testo
- Riordino frasi
- 💬 Chat AI: Conversazione libera con un professore di lingua virtuale che ti corregge
- 🏆 Sistema di gamification: XP, livelli, streak giornalieri
- 📊 Tracciamento progressi: Statistiche dettagliate e classifica
- 🎨 Design Duolingo-like: Interfaccia colorata e divertente
- Frontend: React + Vite
- Backend: Python + FastAPI
- Database: MySQL
- AI: OpenAI SDK (compatibile con Gemini/Claude)
- Containerizzazione: Docker + Docker Compose
- Docker
- Docker Compose
- API Key per Gemini/OpenAI/Claude
git clone <repository-url>
cd babilonia-privatoModifica il file .env nella root del progetto:
ENV_MODE=local # develop # deploy
DB_NAME=domingo
DB_USER=root
DB_PASSWORD=password
DB_PORT=3306
BACKEND_PORT=8000
FRONTEND_PORT=3000Nella cartella envs, crea o modifica il file backend.local.env (o backend.develop.env a seconda della modalità) con le seguenti variabili:
Per Gemini (default):
OPENAI_API_KEY=la-tua-gemini-api-key
OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai/
OPENAI_MODEL=gemini-2.5-flashPer OpenAI:
OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-miniPer Claude (via Anthropic-compatible endpoint):
OPENAI_API_KEY=la-tua-api-key
OPENAI_BASE_URL=https://api.anthropic.com/v1
OPENAI_MODEL=claude-3-haiku-20240307docker-compose up -dQuesto comando avvierà:
- Database MySQL sulla porta 3306
- Backend FastAPI sulla porta 8000
- Frontend React sulla porta 3000
docker-compose ps# Tutti i servizi
docker-compose logs -f
# Solo il backend
docker-compose logs -f backend
# Solo il frontend
docker-compose logs -f frontenddocker-compose downdocker-compose down
docker-compose up -d --build- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Documentazione API: http://localhost:8000/docs
- MySQL: localhost:3306
- Registrati con email, username e password
- Seleziona le lingue: scegli la tua lingua madre e quella che vuoi imparare
- Inizia una lezione: clicca su una lezione dalla dashboard
- Completa gli esercizi: rispondi alle domande generate dall'AI
- Guadagna XP: accumula punti e sali di livello
- Mantieni lo streak: studia ogni giorno per aumentare il tuo streak
babilonia-privato/
├── docker-compose.yml # Orchestrazione container
├── .env # Configurazione (da creare)
├── backend/
│ ├── Dockerfile # Immagine Docker backend
│ ├── main.py # Entry point FastAPI
│ ├── requirements.txt # Dipendenze Python
│ └── app/
│ ├── auth.py # Autenticazione JWT
│ ├── config.py # Configurazione app
│ ├── database.py # Connessione DB
│ ├── models.py # Modelli SQLAlchemy
│ ├── schemas.py # Schemi Pydantic
│ ├── routers/ # API endpoints
│ └── services/
│ └── ai_service.py # Integrazione OpenAI
├── frontend/
│ ├── Dockerfile # Immagine Docker frontend
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ └── src/
│ ├── main.jsx
│ ├── App.jsx
│ ├── context/ # Context React
│ ├── components/ # Componenti riutilizzabili
│ ├── pages/ # Pagine dell'app
│ ├── services/ # API client
│ └── styles/ # CSS
│ ├── i18n/ # Traduzioni interfaccia
└── README.md
# Verifica i log per errori
docker-compose logs
# Ricostruisci le immagini
docker-compose down
docker-compose up -d --build# Verifica che il container MySQL sia in esecuzione
docker-compose ps
# Controlla i log del database
docker-compose logs db
# Assicurati che le credenziali nel .env siano corrette- Verifica che l'API key nel file
.envsia corretta - Controlla che il
OPENAI_BASE_URLcorrisponda al provider scelto - Verifica i limiti di rate del tuo piano API
- Assicurati che tutti i container siano in esecuzione:
docker-compose ps - Verifica che non ci siano conflitti di porte
- Controlla i log:
docker-compose logs frontend backend
# Ferma e rimuovi tutti i container, volumi e immagini
docker-compose down -v
docker-compose up -d --build# Backend
docker-compose exec backend bash
# Frontend
docker-compose exec frontend sh
# Database
docker-compose exec db mysql -u root -p# Entra nel container
docker-compose exec backend bash
# Esegui migrazioni o altri comandi Python
python -m app.script_nameSentiti libero di aprire issue e pull request per migliorare Domingo!
Questo progetto è a scopo educativo.
Buono studio con Domingo! 📚