Badge: [Build], [Lint], [Tests], [License]
Applicazione full‑stack TypeScript con Express (API) e Vite + React (client), TailwindCSS, Drizzle ORM e Neon/Postgres.
- Node.js ≥ 20
- npm (oppure pnpm/yarn se preferisci; gli esempi usano npm)
- Un database Postgres (es. Neon)
- Clona il repository e installa le dipendenze:
npm install- Crea il file
.envpartendo daenv.examplee completa i valori:
cp env.example .envGEMINI_API_KEY: chiave API per @google/genaiDATABASE_URL: stringa di connessione Postgres (es. Neon)PORT(opzionale in locale): default 5001 in example, runtime usaPORTo 5000
- (Opzionale) Allinea lo schema DB con Drizzle:
npm run db:push- Avvia in sviluppo:
npm run devAPI e client verranno serviti sul PORT configurato (dev: Express + Vite middleware).
Web Development:
npm run dev: avvia server Express in modalità sviluppo con Vitenpm run build: build client (Vite) e bundle server (esbuild) indist/npm run start: avvia la build di produzione dadist/npm run check: TypeScript type‑checknpm run db:push: applica lo schema Drizzle al database
Mobile Apps (Capacitor):
npm run cap:sync: sincronizza web build con le app native (Android e iOS)npm run cap:sync:android: sincronizza solo Androidnpm run cap:sync:ios: sincronizza solo iOSnpm run cap:open:android: apri progetto Android in Android Studionpm run cap:open:ios: apri progetto iOS in Xcodenpm run cap:build:android: build completo per Androidnpm run cap:build:ios: build completo per iOSnpm run cap:assets: rigenera icone e splash screens
server/index.ts: bootstrap Express, logging richieste/api, error handler, integrazione Vite in devserver/routes/*: registrazione rotte API (vediregisterRoutes)client/*o root Vite: codice React/Tailwindenv.example: template variabili ambiente
Esempio (.env):
GEMINI_API_KEY=...
DATABASE_URL=postgres://...
# Opzionale in locale; in hosting PORT è impostata dall'ambiente
PORT=5001Note:
- In produzione il server legge
PORTe fa fallback a 5000. - Non committare
.env.
- Imposta
DATABASE_URL(es. Neon) e lancianpm run db:pushper sincronizzare. - Mantieni gli schemi e le migrazioni versionati secondo le convenzioni del team.
- TypeScript: mantieni tipi espliciti sulle API pubbliche; evita
any. - Error handling: usa l’error handler centralizzato; non catturare errori senza gestirli.
- Logging: le richieste
/apisono loggate con durata e payload (troncato). Non loggare segreti. - Sicurezza:
- Valida input con Zod sui boundaries (controller/route)
- Evita dati sensibili nei log e nelle risposte di errore
- Usa
express.json({ verify })solo se necessario per webhooks; non fidarti dirawBodyaltrove - Imposta CORS, rate‑limit e helmet in produzione
- Performance:
- Evita lavoro sincrono pesante nel ciclo di richiesta
- Usa query DB indicizzate e paginazione
- Memoizza nel client con React Query dove opportuno
- Front‑end:
- Componenti piccoli e riutilizzabili; preferisci composizione a props monolitiche
- Gestisci stato server con React Query; stato locale con useState/useReducer
- Tailwind: usa varianti e
tailwind-mergeper classi condizionali
- Segui le regole del formatter (Prettier se presente) e del linter (ESLint se configurato)
- Nomi descrittivi; early‑return; niente nesting profondo; commenti solo per contesto non ovvio
- Branch principale:
main - Convenzioni commit: Conventional Commits
feat: ...,fix: ...,chore: ...,docs: ...,refactor: ...,test: ...,build: ...
- PR piccole, auto‑contenute, con descrizione e checklist
- Workflow: install → type‑check → lint → build → test → deploy
- Cache dipendenze e artefatti; verifica
.envrichieste dal deploy target
Questo progetto supporta la creazione di app native per Android e iOS tramite Capacitor.
Setup iniziale:
Le piattaforme native sono già configurate nelle cartelle android/ e ios/.
Workflow di sviluppo:
- Sviluppa e testa l'app web normalmente con
npm run dev - Quando sei pronto per testare su mobile:
npm run cap:build:android # o cap:build:ios npm run cap:open:android # o cap:open:ios
- Testa l'app in Android Studio o Xcode
Pubblicazione sugli Store: Consulta la guida completa in MOBILE_DEPLOYMENT.md per istruzioni dettagliate su come:
- Configurare certificati e signing
- Generare build per produzione (APK/AAB per Android, Archive per iOS)
- Upload su Google Play Store e Apple App Store
- Gestire aggiornamenti futuri
Requisiti per il deployment mobile:
- Android: Android Studio, Java JDK 17+, account Google Play Developer ($25 una tantum)
- iOS: macOS, Xcode, CocoaPods, account Apple Developer ($99/anno)
- Build:
npm run build - Avvio:
npm run start - Assicurati che
PORTeDATABASE_URLsiano presenti nell’ambiente
- Porta occupata: cambia
PORTnel.env - Type errors:
npm run check - Build fallisce: pulisci
node_modulese reinstalla; verifica versioni Node - DB: controlla la reachability di
DATABASE_URLe i permessi
MIT (vedi package.json).
Apri una issue o una pull request con una descrizione chiara e screenshot/log quando utile.