Un gioco stile Semantle dove devi indovinare la parola del giorno usando la similaritร semantica.
Hotncold/
โโโ backend/ # Server FastAPI
โ โโโ main.py # API endpoints
โ โโโ requirements.txt # Dipendenze Python
โ โโโ README.md # Documentazione backend
โ
โโโ flutter_app/ # App Flutter
โ โโโ lib/
โ โ โโโ main.dart
โ โ โโโ models/ # Modelli dati
โ โ โโโ providers/ # State management
โ โ โโโ screens/ # Schermate UI
โ โ โโโ services/ # API service
โ โ โโโ widgets/ # Componenti UI
โ โโโ pubspec.yaml
โ
โโโ fasttext_it.model # Modello FastText (generato)
โโโ cc.it.300.vec.gz # Dati FastText originali
โโโ hot_and_cold_fasttext.py # Versione terminale originale
# Vai nella cartella backend
cd backend
# Crea ambiente virtuale (opzionale ma consigliato)
python -m venv venv
.\venv\Scripts\Activate.ps1
# Installa dipendenze
pip install -r requirements.txt
# Avvia il server
python main.pyIl server sarร disponibile su: http://localhost:8000
# Vai nella cartella flutter_app
cd flutter_app
# Installa dipendenze
flutter pub get
# Avvia l'app (scegli device)
flutter runIl backend cerca il modello FastText in ../fasttext_it.model.
Se non hai ancora il modello:
- Esegui lo script originale una volta:
python hot_and_cold_fasttext.py - Questo scaricherร e processerร il modello FastText
Modifica l'URL del backend in lib/services/api_service.dart:
// Per localhost (emulatore/desktop)
static const String baseUrl = 'http://localhost:8000';
// Per emulatore Android
static const String baseUrl = 'http://10.0.2.2:8000';
// Per device fisico (usa IP del tuo PC)
static const String baseUrl = 'http://192.168.1.XXX:8000';-
Ogni giorno c'รจ una parola segreta diversa
-
Provi a indovinarla inserendo parole italiane
-
Per ogni tentativo ricevi:
- Rank: posizione nella classifica di similaritร (#1 = parola corretta)
- Temperatura: ๐ฅ = caldissimo, ๐ง = freddissimo
- Similaritร : valore numerico 0-1
-
Piรน il rank รจ basso, piรน sei vicino!
- ๐ฅ๐ฅ๐ฅ = Top 10
- ๐ฅ๐ฅ = Top 50
- ๐ฅ = Top 100
- ๐ก๏ธ = Top 500
- โ๏ธ = Top 1000
- ๐ง = Oltre 1000
Statistiche del server
Info parola del giorno (senza rivelarla)
{
"word": "casa",
"date": "2025-11-17"
}Ottieni suggerimenti (per debug)
Health check
# Test manuale
curl http://localhost:8000/health
# Prova un tentativo
curl -X POST http://localhost:8000/guess `
-H "Content-Type: application/json" `
-d '{"word":"casa"}'# Test su Chrome
flutter run -d chrome
# Test su emulatore Android
flutter run -d emulator
# Test su Windows
flutter run -d windows- Verifica che il modello
fasttext_it.modelesista - Controlla che tutte le dipendenze siano installate
- Controlla la porta 8000 non sia occupata
- Verifica che il backend sia avviato
- Controlla l'URL in
api_service.dart - Per device fisico, usa l'IP del PC nella stessa rete
- Il modello completo รจ ~1.2GB
- ร ottimizzato a 200k parole per performance
- Salva in cache binaria per caricamenti veloci
Usa Gunicorn per produzione:
pip install gunicorn
gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000Oppure deploy su:
- Heroku: con Procfile
- DigitalOcean App Platform
- AWS EC2
- Google Cloud Run
Build per produzione:
# Android
flutter build apk --release
# iOS
flutter build ios --release
# Web
flutter build web --release- La parola giornaliera รจ deterministica basata sulla data
- I tentativi sono salvati in locale (SharedPreferences)
- Il ranking viene calcolato e cachato per performance
- Il modello FastText usa word embeddings italiani reali
- Sistema di statistiche utente
- Condivisione risultati (tipo Wordle)
- Modalitร allenamento con parole passate
- Classifiche globali
- Suggerimenti progressivi
- Dark mode
- Animazioni migliorate
- PWA per web
Progetto personale - Usa come preferisci!
- FastText: https://fasttext.cc/
- Ispirato da Semantle: https://semantle.com/