Architettura
- Frontend: Next.js 15 + TypeScript, Tailwind, Radix, carrelli immagini (Embla), selezione date (React Day Picker), lightbox. i18n (IT/EN/FR/ES/DE).
- Backend (API): Node.js, Express, MongoDB (Mongoose), validazioni Zod, middleware di sicurezza (Helmet, rate‑limit, sanitizzazione).
- Backoffice: Next.js 15, NextAuth (credenziali), React Hook Form + Zod, toasts, theming, lightbox. UI responsive e accessibile.
Frontend (sito pubblico)
- Ricerca e filtri: per location, date, ospiti e opzioni; stato in URL per condivisione (
?adults=2&childrens=1&locations=Alba). - Disponibilità real‑time: integrazione con Italianway per mostrare disponibilità e guidare alla prenotazione.
- Mappa interattiva: vista mappa con marker/cluster e interazione fluida su mobile/desktop.
- Schede appartamento: gallery, servizi, descrizioni, meteo locale e suggerimenti nelle vicinanze.
- Performance: rendering moderno, lazy media, attenzione a LCP/CLS; contenuti e metadati coerenti per lingua.
Backend (API)
- Elenco appartamenti:
GET /v2/apartments con filtri adults, childrens, locations, option, paginazione page/limit. - Dettaglio:
GET /v2/apartments/:slug per informazioni complete. - Vicini:
GET /v2/apartments/nearby con latitude, longitude, guests, excludeSlug per suggerimenti contestuali. - Modello dati: slug, città, capienza, servizi/opzioni, descrizioni multilingua, immagini, coordinate geografiche, recensioni.
- Qualità e sicurezza: validazioni
zod, Helmet, rate‑limiting, sanitizzazione; logging strutturato con Pino.
Esempi inline:
- Base path:
/v2 - Query tipica:
?adults=2&childrens=1&locations=Alba&option=pets-friendly&page=1&limit=10
Backoffice (admin)
- Gestione catalogo: liste, dettagli, modifica rapida (nome, prezzo, città, ospiti, letti, bagni, codici), immagini con lightbox.
- Autenticazione: credenziali con sessione JWT; ruoli/permessi (editor/admin).
- Form:
useForm({ resolver: zodResolver(schema) }) per validazioni affidabili; feedback non invasivi e refresh coerente della vista. - Integrazione API: il backoffice riflette le modifiche sul sito pubblico tramite endpoint versionati.
Ruolo e collaborazione
Mi sono occupato dell’intero progetto: frontend (UX, mappa, filtri, disponibilità Italianway, meteo), backend (API v2, sicurezza, validazioni, geolocalizzazione/vicini) e backoffice (auth, form tipizzati, flussi di aggiornamento, UI accessibile e responsiva).
Highlight tecnico
- Frontend: Next.js 15, Tailwind + Radix, Embla, React Day Picker, i18n, Mapbox.
- Integrazioni: Italianway (disponibilità), OpenWeather (meteo).
- Backend: Node/Express, MongoDB,
zod, Helmet, rate‑limit, logging Pino. - Admin: NextAuth (credenziali, JWT), RHF + Zod, lightbox/toasts.
- Ricerca: filtri server‑side, stato in URL,
nearby con coordinate, ordinamenti e paginazione.