Scope del POC
✅ Cosa Include
- Login artigiano (semplificato)
- Creazione oggetto errante (pietra)
- Generazione URL NFC
- Landing page pubblica con wizard segnalazione
- Salvataggio avvistamento con geolocalizzazione
❌ Cosa NON Include (Rimandato)
- Registrazione artigiano (wizard completo)
- Verifica admin artigiani
- Upload foto
- Sistema notifiche email
- Following oggetti
- Diari di viaggio
- Integrazione Instagram
- Branding personalizzato
User Stories
US-01: Login Artigiano
Come artigiano pre-registrato
Voglio fare login con email e password
Per accedere alla mia dashboard
Criteri di Accettazione:
- ✓ Form login con email + password
- ✓ Validazione credenziali
- ✓ Redirect a dashboard dopo login
- ✓ Messaggio errore se credenziali errate
US-02: Creazione Pietra Errante
Come artigiano loggato
Voglio creare un nuovo oggetto errante
Per iniziare a tracciare il suo viaggio
Criteri di Accettazione:
- ✓ Form con: nome, messaggio (dedica), descrizione (opzionale)
- ✓ Generazione automatica codice univoco (es. ABC123)
- ✓ Generazione URL: https://errantia.net/e/{codice}
- ✓ Visualizzazione URL + QR code da stampare
- ✓ Salvataggio oggetto in database
US-03: Landing NFC Pubblica
Come utente che trova la pietra
Voglio scansionare il tag NFC
Per scoprire cos'è e segnalare dove l'ho trovata
Criteri di Accettazione:
- ✓ Pagina responsive mobile-first
- ✓ Mostra: nome oggetto, messaggio artigiano, numero avvistamenti
- ✓ Wizard semplificato (3 step invece di 7)
US-04: Wizard Segnalazione (Semplificato)
Come utente sulla landing page
Voglio segnalare dove ho trovato l'oggetto
Per contribuire al suo viaggio
Criteri di Accettazione:
- ✓ Step 1: Consenso privacy (checkbox obbligatoria)
- ✓ Step 2: Geolocalizzazione (richiesta permesso browser)
- ✓ Step 3: Conferma e ringraziamento
- ✓ Salvataggio avvistamento con coordinate GPS
- ✓ Mostra mappa con tutti gli avvistamenti precedenti
Architettura POC
┌─────────────────────────────────────────────────────┐
│ FRONTEND │
│ Angular 17 (Standalone) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Login │ │ Dashboard │ │ Landing │ │
│ │ Component │ │ Artigiano │ │ Wizard │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ BACKEND │
│ Node.js + Express │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Auth │ │ Objects │ │ Sightings │ │
│ │ Module │ │ Module │ │ Module │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ DATABASE │
│ PostgreSQL + PostGIS │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │
│ │ users │ │ artisan │ │ objects │ │sighting│ │
│ │ │ │_profiles│ │ │ │ s │ │
│ └─────────┘ └─────────┘ └─────────┘ └────────┘ │
└─────────────────────────────────────────────────────┘
Task di Implementazione
🔧 Backend Tasks
✓
BE-01
Setup progetto Node.js + Express
✓
BE-02
Configurazione PostgreSQL + PostGIS
✓
BE-03
Migration schema POC
✓
BE-04
Middleware JWT authentication
✓
BE-05
Modulo Auth (login, me)
☐
BE-06
Modulo Objects (CRUD artigiano)
☐
BE-07
Modulo Sightings (registrazione pubblica)
☐
BE-08
Generatore codici univoci
🎨 Frontend Tasks
✓
FE-01
Setup progetto Angular 17 (zoneless)
✓
FE-02
Servizio API base + interceptor JWT
☐
FE-05
Dashboard Artigiano
☐
FE-06
Form creazione oggetto
☐
FE-07
Visualizzazione URL + QR code
☐
FE-08
Landing page pubblica (/e/:code)
🚀 DevOps Tasks
✓
DO-01
Script setup ambiente locale
✓
DO-02
Docker compose per sviluppo
☐
DO-03
Seed dati di test
Criteri di Completamento POC
- ✓ Artigiano può loggarsi con credenziali di test
- ✓ Artigiano può creare un oggetto con nome e messaggio
- ✓ Sistema genera URL univoco (es. errantia.net/e/ABC123)
- ☐ QR code visualizzabile e scaricabile
- ☐ Utente anonimo può aprire URL e vedere info oggetto
- ☐ Wizard funziona su mobile (consenso → posizione → grazie)
- ☐ Avvistamento salvato con coordinate GPS
- ☐ Mappa mostra tutti gli avvistamenti dell'oggetto
Benefici dello Spec Driven Development
Questa pianificazione di sprint è versionata insieme al codice:
- ✓ File
sprints/SPRINT-01-POC.md nel repository Git
- ✓ Ogni task completato genera un commit:
git commit -m "BE-05: implement auth module"
- ✓ Il team aggiorna i checkbox (☐ → ✓) man mano che progredisce
- ✓ Gli stakeholder vedono lo stato in tempo reale via Git/GitHub
- ✓ Le modifiche al piano generano PR per discussione
- ✓ Storico completo delle decisioni prese durante lo sprint
POC Scope
✅ What's Included
- Artisan login (simplified)
- Wandering object creation (stone)
- NFC URL generation
- Public landing page with sighting wizard
- Sighting saving with geolocation
❌ What's NOT Included (Deferred)
- Artisan registration (full wizard)
- Admin artisan verification
- Photo upload
- Email notification system
- Object following
- Travel diaries
- Instagram integration
- Custom branding
User Stories
US-01: Artisan Login
As a pre-registered artisan
I want to login with email and password
So that I can access my dashboard
Acceptance Criteria:
- ✓ Login form with email + password
- ✓ Credential validation
- ✓ Redirect to dashboard after login
- ✓ Error message for wrong credentials
US-02: Create Wandering Stone
As a logged-in artisan
I want to create a new wandering object
So that I can start tracking its journey
Acceptance Criteria:
- ✓ Form with: name, message (dedication), description (optional)
- ✓ Automatic unique code generation (e.g., ABC123)
- ✓ URL generation: https://errantia.net/e/{code}
- ✓ URL + QR code display for printing
- ✓ Object saved to database
US-03: Public NFC Landing
As a user who finds the stone
I want to scan the NFC tag
So that I can discover what it is and report where I found it
Acceptance Criteria:
- ✓ Mobile-first responsive page
- ✓ Shows: object name, artisan message, sightings count
- ✓ Simplified wizard (3 steps instead of 7)
US-04: Sighting Wizard (Simplified)
As a user on the landing page
I want to report where I found the object
So that I can contribute to its journey
Acceptance Criteria:
- ✓ Step 1: Privacy consent (mandatory checkbox)
- ✓ Step 2: Geolocation (browser permission request)
- ✓ Step 3: Confirmation and thank you
- ✓ Sighting saved with GPS coordinates
- ✓ Map shows all previous sightings
POC Architecture
┌─────────────────────────────────────────────────────┐
│ FRONTEND │
│ Angular 17 (Standalone) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Login │ │ Dashboard │ │ Landing │ │
│ │ Component │ │ Artigiano │ │ Wizard │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ BACKEND │
│ Node.js + Express │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Auth │ │ Objects │ │ Sightings │ │
│ │ Module │ │ Module │ │ Module │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ DATABASE │
│ PostgreSQL + PostGIS │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │
│ │ users │ │ artisan │ │ objects │ │sighting│ │
│ │ │ │_profiles│ │ │ │ s │ │
│ └─────────┘ └─────────┘ └─────────┘ └────────┘ │
└─────────────────────────────────────────────────────┘
Implementation Tasks
🔧 Backend Tasks
✓
BE-01
Setup Node.js + Express project
✓
BE-02
Configure PostgreSQL + PostGIS
✓
BE-03
POC schema migration
✓
BE-04
JWT authentication middleware
✓
BE-05
Auth module (login, me)
☐
BE-06
Objects module (artisan CRUD)
☐
BE-07
Sightings module (public registration)
☐
BE-08
Unique code generator
🎨 Frontend Tasks
✓
FE-01
Setup Angular 17 project (zoneless)
✓
FE-02
Base API service + JWT interceptor
☐
FE-05
Artisan dashboard
☐
FE-06
Object creation form
☐
FE-07
URL + QR code display
☐
FE-08
Public landing page (/e/:code)
🚀 DevOps Tasks
✓
DO-01
Local environment setup script
✓
DO-02
Docker compose for development
POC Completion Criteria
- ✓ Artisan can login with test credentials
- ✓ Artisan can create an object with name and message
- ✓ System generates unique URL (e.g., errantia.net/e/ABC123)
- ☐ QR code viewable and downloadable
- ☐ Anonymous user can open URL and see object info
- ☐ Wizard works on mobile (consent → location → thanks)
- ☐ Sighting saved with GPS coordinates
- ☐ Map shows all object sightings
Benefits of Spec Driven Development
This sprint plan is versioned together with code:
- ✓ File
sprints/SPRINT-01-POC.md in the Git repository
- ✓ Each completed task generates a commit:
git commit -m "BE-05: implement auth module"
- ✓ The team updates checkboxes (☐ → ✓) as work progresses
- ✓ Stakeholders see real-time status via Git/GitHub
- ✓ Plan changes generate PRs for discussion
- ✓ Complete history of decisions made during the sprint