Nicola Malizia b159d4512f improve profile
2025-10-10 21:07:00 +02:00
2025-10-10 21:07:00 +02:00
2025-10-10 20:50:46 +02:00
2025-10-10 20:57:02 +02:00
2025-10-10 19:22:01 +02:00
2025-10-10 17:41:56 +02:00
2025-10-10 17:43:53 +02:00
2025-10-10 17:41:56 +02:00
2025-10-10 20:17:57 +02:00
2025-10-10 17:41:56 +02:00

Certamente! Un buon file README.md è fondamentale per ogni progetto. Ecco una bozza completa e ben strutturata che puoi adattare. Spiega l'architettura, come iniziare e i comandi più comuni.


Progetto Monorepo [Nome del Progetto]

Questo repository contiene il codice sorgente per [breve descrizione dello scopo del progetto]. È strutturato come una monorepo per facilitare lo sviluppo e la gestione coordinata di frontend e backend.

L'ambiente di sviluppo locale è completamente gestito tramite Docker e Docker Compose.

🚀 Tech Stack

  • Frontend: React (con Vite.js)
  • Backend: FastAPI (Python)
  • Database: PostgreSQL
  • Migrazioni DB: Alembic
  • Infrastruttura di Sviluppo: Docker, Docker Compose
  • Reverse Proxy: Nginx

🏗️ Struttura del Progetto

La monorepo è organizzata come segue per separare le responsabilità:

.
├── .env.example        # Template per le variabili d'ambiente
├── docker-compose.yml  # Orchesterazione dei servizi Docker
├── packages/           # Contiene il codice sorgente delle applicazioni
│   ├── backend/        # Servizio FastAPI
│   └── frontend/       # Applicazione React
├── proxy/              # Configurazione del reverse proxy Nginx
└── uploads/            # Directory per lo storage di file (mappata come volume)
  • packages/: Contiene i singoli servizi (backend, frontend). Ogni pacchetto è autonomo e ha il suo Dockerfile e la gestione delle dipendenze.
  • proxy/: Contiene la configurazione di Nginx, che funge da unico punto di ingresso per l'applicazione, instradando il traffico verso il frontend o il backend a seconda dell'URL.
  • uploads/: Una directory persistente, condivisa con il container del backend, per memorizzare i file caricati dagli utenti.

🏁 Guida Rapida: Avvio Locale

Segui questi passaggi per avviare l'intero stack in ambiente di sviluppo.

Prerequisiti

1. Clona il Repository

git clone [URL_DEL_TUO_REPOSITORY]
cd [NOME_DELLA_CARTELLA]

2. Configura le Variabili d'Ambiente

Copia il file di esempio .env.example e crea un file .env. Questo file non verrà tracciato da Git ed è sicuro per le tue credenziali locali.

cp .env.example .env

Apri il file .env e personalizza i valori se necessario (i valori di default sono pensati per lo sviluppo locale e dovrebbero funzionare subito).

3. Avvia i Servizi

Usa Docker Compose per costruire le immagini e avviare tutti i container.

docker-compose up --build
  • Il flag --build è necessario la prima volta o ogni volta che modifichi un Dockerfile o le dipendenze (es. package.json o pyproject.toml).
  • Per avviare i container in background, usa il flag -d: docker-compose up -d.

4. Accedi all'Applicazione

Una volta che tutti i servizi sono in esecuzione, puoi accedere a:

L'ambiente di sviluppo è configurato con hot-reloading: qualsiasi modifica al codice nel frontend o nel backend verrà applicata automaticamente senza dover riavviare i container.


🛠️ Comandi Utili per lo Sviluppo

Questi comandi devono essere eseguiti dalla root del progetto.

Fermare i servizi

docker-compose down

Per rimuovere anche i volumi (incluso il database!), usa: docker-compose down -v.

Visualizzare i log

# Log di tutti i servizi in tempo reale
docker-compose logs -f

# Log di un servizio specifico (es. backend)
docker-compose logs -f backend

Eseguire comandi all'interno di un container

Puoi aprire una shell o eseguire un comando specifico in un container in esecuzione.

# Aprire una shell bash nel container del backend
docker-compose exec backend bash

# Aprire una shell sh nel container del frontend
docker-compose exec frontend sh

Gestione delle Migrazioni del Database (Alembic)

Le migrazioni del database vengono gestite tramite Alembic all'interno del container del backend.

  1. Creare una nuova migrazione (dopo aver modificato i modelli SQLAlchemy in packages/backend/app/models.py):

    docker-compose exec backend alembic revision --autogenerate -m "Descrizione della modifica"
    
  2. Applicare le migrazioni al database:

    docker-compose exec backend alembic upgrade head
    

Gestire le dipendenze

Le dipendenze devono essere aggiunte all'interno del rispettivo container per garantire la coerenza dell'ambiente.

  • Aggiungere una dipendenza Python (Backend):

    docker-compose exec backend poetry add nome-pacchetto
    
  • Aggiungere una dipendenza Node.js (Frontend):

    docker-compose exec frontend npm install nome-pacchetto
    

Dopo aver aggiunto una dipendenza, è buona norma ricostruire l'immagine per essere sicuri che i nuovi pacchetti vengano inclusi correttamente: docker-compose up --build.


🌐 Endpoint e Servizi

Servizio URL di accesso locale Indirizzo interno a Docker Descrizione
Proxy http://localhost:8080 proxy:80 Punto di ingresso unico.
Frontend http://localhost:8080 http://frontend:5173 Interfaccia utente React (servita tramite Vite dev server).
Backend http://localhost:8080/api http://backend:8000 API FastAPI.
Database localhost:5432 (se esposta) db:5432 Istanza PostgreSQL.
Description
No description provided
Readme 10 MiB
Languages
JavaScript 52.9%
Python 34.3%
CSS 9.9%
Dockerfile 1.5%
Mako 0.8%
Other 0.6%