MelonQ platform separation (draft)
Hotel-owner product on MelonQ. Guest product on BookDirect. Separate apps, cookies, deploys.
v1 Extranet stays /extranet on frontend-bookdirect-user-app until redirects exist.
| Surface | Draft host | v1 |
|---|---|---|
| Partner platform | https://platform.melonq.com | /extranet |
| Onboarding | https://onboarding.bookdirect.melonq.com | /extranet/onboarding |
| Partner sign in | https://melonq.com/signin | Core login in the same Next app |
| Marketplace | https://bookdirect.ng | same |
| Booking Engine | {HotelName}.com-bookdirect.com | Direct Booking |
Checklist
| Concern | Marketplace | MelonQ |
|---|---|---|
| Auth cookie | Guest session | NEXT_PUBLIC_PARTNER_SESSION_COOKIE_NAME (or MelonQ name) |
| Auth API | Core guest JWT | Core partner JWT — same users table OK, different clients |
| Roles | GUEST | PROPERTY_OWNER, staff, MelonQ admin |
| Amenities picker | Local slugs | Same tick list |
| Email Flexi signup | — | MelonQ onboarding/signin, not /extranet |
Do not share session cookies across .ng and .melonq.com without an explicit SSO design.
Cross-app links
- Guest manage-stay URLs stay on Marketplace
- Hotel Accept/Reject token confirm stays on Middleware / booking host
- Partner APIs require partner JWT. Browse key stays public for Marketplace only
Migration
- Stand up MelonQ against Middleware
- Move onboarding →
onboarding.bookdirect.melonq.com - Move ops →
platform.melonq.com - 301
bookdirect.ng/extranet/* - Remove extranet route group from the Marketplace deploy
Update the activation matrix winner column only when hosts are frozen and this draft is promoted.