 Ho creato l’MVP completo nel repository corrente: backend FastAPI con modelli/servizi/seed/assegnazione tavoli, frontend Next.js con dashboard/prenotazioni/tavoli/piantina, PostgreSQL via Docker
  Compose, documentazione e file di avvio.

  Struttura
  Struttura sorgente principale creata, esclusi artefatti di build/verifica come node_modules, .next e __pycache__:

  .
  ├── README.md
  ├── docker-compose.yml
  ├── docs
  │   ├── architecture.md
  │   └── product.md
  ├── backend
  │   ├── .env.example
  │   ├── Dockerfile
  │   ├── requirements.txt
  │   └── app
  │       ├── main.py
  │       ├── api
  │       │   ├── deps.py
  │       │   └── routes.py
  │       ├── core
  │       │   ├── config.py
  │       │   └── database.py
  │       ├── db
  │       │   └── init.sql
  │       ├── models
  │       │   ├── customer.py
  │       │   ├── reservation.py
  │       │   ├── room.py
  │       │   ├── table.py
  │       │   └── venue.py
  │       ├── schemas
  │       │   ├── customer.py
  │       │   ├── floor_plan.py
  │       │   ├── reservation.py
  │       │   ├── room.py
  │       │   ├── table.py
  │       │   └── venue.py
  │       └── services
  │           ├── assignment.py
  │           ├── floor_plan_service.py
  │           ├── reservation_service.py
  │           └── seed_service.py
  └── frontend
      ├── .env.example
      ├── Dockerfile
      ├── package.json
      ├── package-lock.json
      ├── tsconfig.json
      ├── tailwind.config.ts
      ├── postcss.config.js
      ├── next.config.mjs
      ├── app
      │   ├── layout.tsx
      │   ├── page.tsx
      │   ├── globals.css
      │   ├── reservations
      │   │   ├── page.tsx
      │   │   └── new/page.tsx
      │   ├── tables/page.tsx
      │   └── floor-plan/page.tsx
      ├── components
      │   ├── navigation.tsx
      │   └── status-badge.tsx
      └── lib
          ├── api.ts
          └── types.ts

  Cosa ho implementato

  - Backend con tutte le endpoint richieste, CORS, modelli SQLAlchemy, schemi Pydantic, status history e seed demo.
  - Motore MVP di assegnazione: preferisce tavolo singolo, poi combinazioni, evita conflitti temporali e minimizza spreco posti.
  - Frontend con:
      - dashboard giornaliera
      - lista prenotazioni con filtri, ricalcolo giornata e riassegnazione singola
      - form nuova prenotazione
      - gestione tavoli
      - floor plan 2D con tavoli posizionati e stato occupazione
  - Dockerfile per frontend/backend, docker-compose.yml, README completo e documenti prodotto/architettura.

  Verifica eseguita

  - python3 -m compileall backend/app passato.
  - Smoke test backend sul layer applicativo passato con DB SQLite temporaneo:
      - seed demo creato
      - nuova prenotazione creata e assegnata
      - floor plan generato con 8 tavoli e 11 prenotazioni.
  - npm run build nel frontend passato.
  - Non ho potuto eseguire docker compose qui perché Docker non è installato in questo ambiente WSL.

  Comandi esatti per avviare tutto

  Con Docker:

  docker compose up --build
  curl -X POST http://localhost:8000/seed-demo

  Senza Docker, assumendo PostgreSQL attivo:

  cp backend/.env.example backend/.env
  cp frontend/.env.example frontend/.env.local
  cd backend
  python3 -m venv .venv
  source .venv/bin/activate
  pip install -r requirements.txt
  uvicorn app.main:app --reload

  In un secondo terminale:

  cd frontend
  npm install
  npm run dev

  Seed demo:

  curl -X POST http://localhost:8000/seed-demo

  URL:

  - Frontend: http://localhost:3000
  - Backend: http://localhost:8000
  - Swagger: http://localhost:8000/docs

  TODO V2

  - CRUD UI per TableCombination e assegnazione manuale drag-and-drop sulla piantina.
  - Supporto multi-venue/multi-room più avanzato nelle regole di assegnazione.
  - Ingresso prenotazioni da WhatsApp/webhook e base per automazioni AI.