Skip to content

Lezione 14: Progetto — Ideazione e setup

  • Scegliere un’idea progetto realistica
  • Progettare l’app su carta (wireframe)
  • Impostare la struttura del progetto
  • Iniziare l’implementazione

Ecco 6 idee progetto di difficoltà crescente. Scegli quella che ti ispira di più:

ProgettoCosa deve fareCompetenze
Todo List AvanzataTask con priorità, categorie, scadenzaComponenti, JSON, liste
Rubrica ContattiAggiungi/cerca/elimina contattiForm, liste, JSON
ProgettoCosa deve fareCompetenze
Diario PersonalePost con titolo, testo, data, immaginiJSON, FilePicker, navigazione
Gestore SpeseTransazioni, categorie, totaleForm, JSON, calcoli
App Meteo (migliorata)Preferiti, cronologia, 7 giorniAPI, navigazione, JSON
ProgettoCosa deve fareCompetenze
Flashcard QuizCarte, punteggio, timer, categorieTimer, JSON, navigazione
Catalogo ProdottiLista, dettaglio, carrello, ricercaAPI, navigazione, JSON

Se hai…Scegli…
Poca esperienzaTodo List o Rubrica
Voglia di sfidaGestore Spese o Diario
Vuoi stupireFlashcard Quiz o Catalogo
API ti appassionaApp Meteo migliorata

Regola: Meglio un progetto semplice fatto bene che uno complesso fatto a metà.


Prima di scrivere codice, disegna le schermate dell’app su carta o con uno strumento.

┌─────────────────────────┐
│ ← Titolo ⚙️ │ ← AppBar
├─────────────────────────┤
│ │
│ Contenuto della │
│ schermata con │
│ tutti gli elementi │
│ │
│ [Bottone] │
│ │
├─────────────────────────┤
│ [Tab1] [Tab2] [Tab3] │ ← NavigationBar (se presente)
└─────────────────────────┘

Per ogni schermata, segna:

  1. Titolo della schermata
  2. Componenti presenti (text, button, lista, immagine…)
  3. Dati mostrati e dati da inserire
  4. Navigazione: dove porta ogni bottone?
Schermata PRINCIPALE:
┌────────────────────────┐
│ ← Todo List ➕ │
├────────────────────────┤
│ [📝 Nuovo task...] │
│ [➕ Aggiungi] │
│ ───────────────────── │
│ ☐ Comprare pane 🗑️ │
│ ☑️ Fare compiti 🗑️ │
│ ☐ Studiare Flet 🗑️ │
│ ───────────────────── │
│ Task: 3 completati: 1 │
└────────────────────────┘
Schermata DETTAGLIO (opzionale):
┌────────────────────────┐
│ ← Dettaglio Task │
├────────────────────────┤
│ Titolo: Comprare pane │
│ Priorità: Alta │
│ Categoria: Casa │
│ Scadenza: 20/06/2026 │
│ │
│ [Modifica] [Elimina] │
└────────────────────────┘

Organizza i file in modo ordinato:

progetto/
├── main.py # File principale (lo esegui)
├── dati.json # Dati salvati (creato automaticamente)
└── images/ # Immagini del progetto (se presenti)
├── logo.png
└── ...
import flet as ft
import json
import os
import threading
import time
# Aggiungi qui altri import necessari
FILE_DATI = "dati.json"
def carica_dati():
if os.path.exists(FILE_DATI):
with open(FILE_DATI, "r", encoding="utf-8") as f:
return json.load(f)
return []
def salva_dati(dati):
with open(FILE_DATI, "w", encoding="utf-8") as f:
json.dump(dati, f, indent=2, ensure_ascii=False)
def main(page: ft.Page):
page.title = "Il Mio Progetto"
page.padding = 30
page.theme_mode = ft.ThemeMode.LIGHT
# Carica dati all'avvio
dati = carica_dati()
# --- QUI LA TUA APP ---
page.add(
ft.Text("Benvenuto!", size=24, weight="bold"),
)
ft.app(target=main)

Prima di iniziare a scrivere codice, completa questa checklist:

  • Ho scelto l’idea progetto
  • So cosa fa l’app (descrivila in una frase)
  • Ho identificato le 3-5 funzionalità principali
  • Ho disegnato tutte le schermate (almeno 2)
  • Ho segnato la navigazione tra schermate
  • So quali dati devo salvare (JSON)
  • Ho creato la cartella del progetto
  • Ho creato main.py
  • Ho copiato il template con carica/salva JSON
  • L’app parte senza errori

Settimana 6 (12 ore totali progetto — ore 31-36)

Section titled “Settimana 6 (12 ore totali progetto — ore 31-36)”
OraCosa fare
1-2Scegliere idea, disegnare wireframe
3-4Setup progetto, creare struttura base
5-6Implementare schermata principale (o primo tab)
7-8Implementare navigazione (se multi-screen)
9-10Aggiungere funzionalità core (CRUD base)
11-12Test e debug

Settimana 7 (12 ore totali progetto — ore 37-48)

Section titled “Settimana 7 (12 ore totali progetto — ore 37-48)”
OraCosa fare
1-4Completare funzionalità
5-6Aggiungere persistenza JSON
7-8UI rifinita (tema, colori, ombre)
9-10Test, fix bug
11-12Build APK + preparare presentazione

# ✅ VERSIONE 1: Funzionalità base
def aggiungi(e):
lista.controls.append(ft.Text(input.value))
page.update()
# ✅ VERSIONE 2: Con persistenza
def aggiungi(e):
dati.append(input.value)
salva_dati(dati)
ricostruisci_lista()
page.update()
# ✅ VERSIONE 3: Con stile
def aggiungi(e):
dati.append({"testo": input.value, "fatto": False})
salva_dati(dati)
ricostruisci_lista()
mostra_snackbar("✅ Aggiunto!")
page.update()
  1. Torna agli esercizi delle lezioni precedenti
  2. Cerca su Flet Docs
  3. Chiedi al docente
  4. Semplifica: togli una funzionalità e concentrati sul resto

🎯 Compito: Completare la pianificazione

Section titled “🎯 Compito: Completare la pianificazione”

Entro la fine di questa lezione devi avere:

  1. Nome del progetto (es. “TaskMaster”, “SpendWise”, “MyDiary”)
  2. Una frase che descrive cosa fa l’app
  3. Wireframe di almeno 2 schermate (foto del disegno)
  4. Elenco funzionalità (almeno 3)
  5. Struttura dati JSON (come saranno organizzati i dati?)
  6. Template progetto funzionante con main.py
  • Cartella del progetto in progetti/nome_progetto/
  • File main.py con template base
  • Wireframe (foto nella cartella o su carta da mostrare)