All work

Full-Stack Web App 2024–Present

Maidenhead Central

A full-stack property-booking platform for a short-term lettings business, supporting property listings, booking requests, reservation management, and iCal synchronisation with external platforms. The public development build is still being refined.

Maidenhead Central project preview
Project
Full-Stack Web App
Role
Sole Developer
Year
2024–Present
Focus
Next.js 13 / React 18

Context

  • Problem: Maidenhead Central was created for a short-term lettings business that wanted to support direct relationships with returning guests and reduce its reliance on third-party booking platforms and their service fees.
  • Audiences: Guests can browse and favourite properties, request bookings, manage reservations, and contact hosts. Hosts can create listings, manage availability, and review reservation requests.
  • Scope: Authentication supports email and password alongside Google and GitHub OAuth. Each property can also import external availability through iCal feeds.
  • Status: The public development build demonstrates the current working flows. Payments and two-way calendar synchronisation remain in development.

Product decisions

  • Booking model: The platform uses booking requests rather than instant payment. This allows hosts to review a request before accepting it, but means a complete direct-booking flow still requires payment integration.
  • Availability: A scheduled import refreshes blocked dates from third-party iCal feeds, while hosts can also run a manual sync or force a complete reimport. Because synchronisation is currently inbound only, cancellations and accepted direct bookings still require careful reconciliation.
  • Responsive journeys: Guest browsing and host-management flows were designed for both desktop and mobile because either device may be used during a booking journey.
  • Authentication: Credential sign-in gives users an alternative to third-party accounts, while Google and GitHub OAuth reduce friction for users who prefer them.
  • Property rules: Hosts can configure minimum stays and guest capacities per property, giving each listing its own booking constraints.

Build

  • Architecture: Next.js API routes handle application logic, with Prisma providing typed access to MongoDB.
  • Authorisation: NextAuth.js sessions protect account, listing, and reservation actions, with owner checks applied to host-only operations.
  • Client and media: Zustand manages shared interface state, Cloudinary stores listing media, and React Leaflet provides property-location maps.
  • Notifications: Resend sends transactional messages during the booking-request journey.
  • Calendar integration: node-ical parses Airbnb, Booking.com, Vrbo, and other ICS feeds so imported reservations can block unavailable dates.
  • Automation: An authenticated scheduled task refreshes imported calendars, while conflict checks prevent overlapping requests from being created.

Outcome

  • Working flows: The current build supports account creation, authentication, property browsing, favourites, booking requests, guest reservations, host listings, calendar imports, and email notifications.
  • Evidence: I have tested the deployed workflows and integrations, but the app has not yet been used in production, so I do not claim usage or conversion metrics.
  • Lessons: The hardest part was keeping local availability consistent with cancellations and partial updates from external calendars.
  • Next milestone: Add secure payments and outbound calendar updates so accepted direct bookings can propagate to external platforms.