⚠️ Progetto in sviluppo — Il progetto è funzionante nelle sue funzionalità principali, ma è ancora in fase di sviluppo attivo. Potrebbero essere presenti bug o comportamenti inattesi. Il codice viene aggiornato e migliorato progressivamente.
App web per tracciare le proprie abitudini quotidiane (lettura, acqua, allenamento, ecc.), costruita con Django. Permette di registrare il completamento giornaliero, visualizzare i progressi in un grafico e monitorare le streak.
- Registrazione e login — ogni utente ha le proprie abitudini private
- Dashboard giornaliera — visualizza le abitudini del giorno selezionato e le segna come completate o da fare
- Navigazione per data — puoi consultare o modificare i log di giorni precedenti
- Grafico settimanale — mostra la percentuale di completamento degli ultimi 7 giorni (Chart.js)
- Streak — conta i giorni consecutivi in cui tutte le abitudini sono state completate al 100%
- Aggiunta abitudini — form diretto nella dashboard per aggiungere nuove abitudini
- Eliminazione abitudini — rimuove l'abitudine e tutti i log storici collegati
| Tecnologia | Versione | Utilizzo |
|---|---|---|
| Python | 3.12 | Linguaggio base |
| Django | 6.0.5 | Framework web |
| SQLite | — | Database (sviluppo) |
| Chart.js | CDN | Grafico settimanale |
| Pico CSS | CDN | Stile UI |
| python-decouple | 3.8 | Gestione variabili d'ambiente |
dashboard-abitudini/
├── manage.py
├── requirements.txt
├── .env ← NON incluso nel repo (vedi sotto)
├── .gitignore
│
├── dashboard_habits/ ← configurazione progetto Django
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ └── asgi.py
│
└── tracker/ ← app principale
├── models.py ← Abitudine, LogAbitudine
├── views.py ← dashboard, toggle_abitudine, elimina_abitudine
├── views_auth.py ← registrazione
├── urls.py ← rotte principali
├── urls_auth.py ← rotta registrazione
├── forms.py ← AbitudineForm
├── admin.py ← configurazione pannello admin
├── migrations/
└── templates/
├── tracker/
│ └── dashboard.html
└── registration/
├── login.html
└── register.html
Rappresenta una singola abitudine legata a un utente.
| Campo | Tipo | Note |
|---|---|---|
nome |
CharField(50) | Nome dell'abitudine |
proprietario |
ForeignKey(User) | Utente proprietario |
created_at |
DateTimeField | Data di creazione (automatica) |
Rappresenta il log giornaliero di un'abitudine (completata o no).
| Campo | Tipo | Note |
|---|---|---|
abitudine |
ForeignKey(Abitudine) | Abitudine collegata |
data |
DateField | Giorno del log |
completata |
BooleanField | Completata (default: False) |
Un vincolo
UniqueConstraintgarantisce un solo log per abitudine per giorno.
git clone https://github.com/ectorr01/dashboard-abitudini.git
cd dashboard-abitudinipython -m venv venv
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windowspip install -r requirements.txtCrea un file .env nella cartella radice del progetto (dove si trova manage.py):
SECRET_KEY=la-tua-chiave-segreta-qui
DEBUG=True
Per generare una SECRET_KEY valida:
python manage.py shell
>>> from django.core.management.utils import get_random_secret_key
>>> print(get_random_secret_key())
>>> exit()
⚠️ Il file.envnon viene mai committato su Git perché contiene dati sensibili. Ogni sviluppatore deve crearne uno proprio in locale. Non condividere mai laSECRET_KEYpubblicamente.
python manage.py migratepython manage.py createsuperuserpython manage.py runserverL'app è disponibile su http://127.0.0.1:8000.
Il file .env contiene variabili d'ambiente sensibili e non deve mai essere incluso nel repository Git. Il .gitignore lo esclude già automaticamente.
| Variabile | Descrizione | Esempio |
|---|---|---|
SECRET_KEY |
Chiave crittografica di Django | Stringa casuale di 50+ caratteri |
DEBUG |
Modalità debug (solo sviluppo) | True in locale, False in produzione |
In produzione, DEBUG deve essere impostato a False e ALLOWED_HOSTS deve contenere il dominio reale.
Progetto realizzato come esercizio per imparare Django e Git/GitHub.
🚧 Work in progress — Il progetto è caricato su GitHub in uno stato funzionante, ma lo sviluppo è ancora in corso. Alcune funzionalità potrebbero essere incomplete o presentare bug. Il codice verrà revisionato, migliorato e corretto nel tempo.
Se noti qualcosa che non funziona, sentiti libero di aprire una Issue su GitHub.