Problem
Every booking on ManageHub requires a registered account. There is no public-facing booking page that a hub can share on their website or social media for walk-in day passes. The backend public booking endpoint (GF-BE-19) handles this without authentication but has no frontend page.
Proposed Solution
Create frontend/app/book/page.tsx as a public, unauthenticated booking page.
This page must be excluded from the authentication middleware. Check frontend/middleware.ts to ensure /book is listed as a public route.
Page flow (3 steps):
- Select a workspace — shows available workspaces as cards (only day-pass eligible types); member selects one and picks a date
- Your details — form fields: Full Name, Email Address, Phone Number
- Payment — shows booking summary (workspace, date, price) and a "Pay Now" button that calls
POST /bookings/public/day-pass and redirects to the returned Paystack authorizationUrl
After payment, Paystack redirects to a confirmation URL. Create frontend/app/book/success/page.tsx showing a "Booking confirmed!" message.
Acceptance Criteria
Depends on: [GF-BE-19] Add public unauthenticated day-pass booking endpoint for walk-ins
Problem
Every booking on ManageHub requires a registered account. There is no public-facing booking page that a hub can share on their website or social media for walk-in day passes. The backend public booking endpoint (GF-BE-19) handles this without authentication but has no frontend page.
Proposed Solution
Create
frontend/app/book/page.tsxas a public, unauthenticated booking page.This page must be excluded from the authentication middleware. Check
frontend/middleware.tsto ensure/bookis listed as a public route.Page flow (3 steps):
POST /bookings/public/day-passand redirects to the returned PaystackauthorizationUrlAfter payment, Paystack redirects to a confirmation URL. Create
frontend/app/book/success/page.tsxshowing a "Booking confirmed!" message.Acceptance Criteria
frontend/app/book/page.tsxis publicly accessible without authentication/bookand/book/successare excluded from auth middleware infrontend/middleware.tsPOST /bookings/public/day-passand redirects to Paystackfrontend/app/book/success/page.tsxshows a confirmation message after redirect