Architecture
- Frontend: Next.js 15 + TypeScript, Tailwind, Radix, image carousels (Embla), date picker (React Day Picker), lightbox. i18n (IT/EN/FR/ES/DE).
- Backend (API): Node.js, Express, MongoDB (Mongoose), Zod validation, security middlewares (Helmet, rate‑limit, sanitization).
- Backoffice: Next.js 15, NextAuth (credentials), React Hook Form + Zod, toasts, theming, lightbox. Responsive, accessible UI.
Frontend (public site)
- Search & filtering: by location, dates, guests, options; shareable URL state (
?adults=2&childrens=1&locations=Alba). - Real‑time availability: Italianway integration to display availability and guide bookings.
- Interactive map: map view with markers/clusters and smooth interactions on mobile/desktop.
- Apartment pages: galleries, amenities, descriptions, local weather, and nearby recommendations.
- Performance: modern rendering, lazy media, tuned LCP/CLS; consistent per‑locale metadata.
Backend (API)
- All apartments:
GET /v2/apartments with adults, childrens, locations, option, plus page/limit. - Single:
GET /v2/apartments/:slug for full details. - Nearby:
GET /v2/apartments/nearby with latitude, longitude, guests, excludeSlug for contextual suggestions. - Data model: slug, city, capacity, amenities/options, multi‑language descriptions, images, geo coordinates, reviews.
- Quality & security:
zod validation, Helmet, rate‑limiting, sanitization; Pino structured logging.
Inline examples:
- Base path:
/v2 - Typical query:
?adults=2&childrens=1&locations=Alba&option=pets-friendly&page=1&limit=10
Backoffice (admin)
- Catalog management: lists, details, inline edits (name, price, city, guests, beds, baths, codes), image lightbox.
- Auth: credential‑based login with JWT session; roles/permissions (editor/admin).
- Forms:
useForm({ resolver: zodResolver(schema) }) for robust validation; unobtrusive feedback and reliable refresh. - API integration: backoffice updates propagate to the public site via versioned endpoints.
Role and collaboration
I built all three parts: frontend (UX, map, filters, Italianway availability, weather), backend (v2 API, security, validation, geolocation/nearby), and backoffice (auth, typed forms, update flows, accessible/responsive UI).
Technical highlights
- Frontend: Next.js 15, Tailwind + Radix, Embla, React Day Picker, i18n, Mapbox.
- Integrations: Italianway (availability), OpenWeather (weather).
- Backend: Node/Express, MongoDB,
zod, Helmet, rate‑limit, Pino logging. - Admin: NextAuth (credentials, JWT), RHF + Zod, lightbox/toasts.
- Search: server‑side filters, URL state,
nearby by coordinates, sorting and pagination.