Skip to content

piopy/domingo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Domingo - Impara le Lingue Giocando

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.

DISCLAIMER

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.

✨ Caratteristiche

  • 🌍 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

🛠️ Tecnologie

  • Frontend: React + Vite
  • Backend: Python + FastAPI
  • Database: MySQL
  • AI: OpenAI SDK (compatibile con Gemini/Claude)
  • Containerizzazione: Docker + Docker Compose

📋 Prerequisiti

  • Docker
  • Docker Compose
  • API Key per Gemini/OpenAI/Claude

🚀 Installazione

1. Clona il repository

git clone <repository-url>
cd babilonia-privato

2. Configura le variabili d'ambiente

Modifica 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=3000

Configurazione per diversi provider AI:

Nella 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-flash

Per OpenAI:

OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini

Per 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-20240307

▶️ Avvio dell'Applicazione

Avvia tutti i servizi con Docker Compose

docker-compose up -d

Questo comando avvierà:

  • Database MySQL sulla porta 3306
  • Backend FastAPI sulla porta 8000
  • Frontend React sulla porta 3000

Verifica lo stato dei container

docker-compose ps

Visualizza i log

# Tutti i servizi
docker-compose logs -f

# Solo il backend
docker-compose logs -f backend

# Solo il frontend
docker-compose logs -f frontend

Ferma i servizi

docker-compose down

Riavvia i servizi dopo modifiche

docker-compose down
docker-compose up -d --build

🌐 URL dell'Applicazione

📱 Come Usare l'App

  1. Registrati con email, username e password
  2. Seleziona le lingue: scegli la tua lingua madre e quella che vuoi imparare
  3. Inizia una lezione: clicca su una lezione dalla dashboard
  4. Completa gli esercizi: rispondi alle domande generate dall'AI
  5. Guadagna XP: accumula punti e sali di livello
  6. Mantieni lo streak: studia ogni giorno per aumentare il tuo streak

📁 Struttura del Progetto

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

🔧 Troubleshooting

I container non si avviano

# Verifica i log per errori
docker-compose logs

# Ricostruisci le immagini
docker-compose down
docker-compose up -d --build

Errore di connessione al database

# 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

Errore API AI

  • Verifica che l'API key nel file .env sia corretta
  • Controlla che il OPENAI_BASE_URL corrisponda al provider scelto
  • Verifica i limiti di rate del tuo piano API

Il frontend non si collega al backend

  • 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

Reset completo dell'ambiente

# Ferma e rimuovi tutti i container, volumi e immagini
docker-compose down -v
docker-compose up -d --build

🛠️ Sviluppo

Accedi ai container

# Backend
docker-compose exec backend bash

# Frontend
docker-compose exec frontend sh

# Database
docker-compose exec db mysql -u root -p

Esegui comandi nel backend

# Entra nel container
docker-compose exec backend bash

# Esegui migrazioni o altri comandi Python
python -m app.script_name

🤝 Contribuire

Sentiti libero di aprire issue e pull request per migliorare Domingo!

📄 Licenza

Questo progetto è a scopo educativo.


Buono studio con Domingo! 📚

About

Un clone di *uolingo che utilizza l'IA per generare esercizi personalizzati, lezioni di teoria e una chat interattiva con un professore virtuale. Utile per esercitarsi su lingue più "di nicchia" e imparare cose nuove.

Topics

Resources

License

Stars

Watchers

Forks

Contributors