{ "demo": true, "settings": { "merge": { "companyName": "Gotham House", "tagline": "A members' club after dark." } }, "data_tables": [ { "key": "contact_submissions", "name": "Door Enquiries", "description": "Seeded contact-form submissions for the Gotham House demo. A submission becomes a row here and emails the site admins.", "columns": [ { "key": "name", "label": "Name", "type": "text", "required": true }, { "key": "email", "label": "Email", "type": "email", "required": true }, { "key": "party", "label": "Party size", "type": "text", "required": false }, { "key": "message", "label": "Message", "type": "text", "required": true } ] } ], "pages": [ { "slug": "/", "title": "Gotham House", "template_key": "landing", "blocks": [ { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 1, "content": { "template": "centered", "minHeight": "75vh", "eyebrow": "Members only", "headline": "Gotham House", "subheadline": "A members' club after dark.", "description": "Late rooms, a long bar and a short guest list. Doors from nine, Thursday to Sunday. Bring your card.", "ctaPrimary": { "text": "Request the guest list", "url": "/contact" }, "ctaSecondary": { "text": "See the programme", "url": "#programme" } } }, { "block_key": "gotham:events_marquee", "title": "Programme", "slot": "main", "sort_order": 2, "content": { "eyebrow": "The programme", "title": "Tonight and after", "events": [ { "date": "Thu", "name": "Late Set", "room": "Main Room", "note": "Resident selectors. Slow start, long finish.", "url": "/contact" }, { "date": "Fri", "name": "The Gilt Sessions", "room": "The Brass Room", "note": "House and disco on the good system.", "url": "/contact" }, { "date": "Sat", "name": "Members' Night", "room": "Whole House", "note": "Card on the door. No list, no entry.", "url": "/contact" }, { "date": "Sun", "name": "Last Pour", "room": "The Cellar Bar", "note": "Quiet room. Records and a nightcap.", "url": "/contact" } ] } }, { "block_key": "gotham:membership_tiers", "title": "Membership", "slot": "main", "sort_order": 3, "content": { "eyebrow": "Membership", "title": "Join the house", "intro": "Two ways in. Both start at the door.", "tiers": [ { "name": "House", "price": "$40", "cadence": "/ month", "description": "The standard card. Enough for most nights.", "featured": false, "applyLabel": "Apply", "applyUrl": "/contact", "features": [ { "label": "Priority on the guest list" }, { "label": "The main room and the cellar bar" }, { "label": "Two guests a night" } ] }, { "name": "Brass", "price": "$120", "cadence": "/ month", "description": "The full card. Every room, every night.", "featured": true, "applyLabel": "Apply", "applyUrl": "/contact", "features": [ { "label": "Everything in House" }, { "label": "The Brass Room and private booths" }, { "label": "First call on bottle service" }, { "label": "Four guests a night" } ] } ] } }, { "block_key": "gotham:bottle_menu", "title": "Bottle service", "slot": "main", "sort_order": 4, "content": { "eyebrow": "The cellar", "title": "Bottle service", "footnote": "Booths hold six. Ask the host for the full list.", "sections": [ { "title": "Champagne", "items": [ { "name": "House brut", "note": "By the glass or the bottle.", "price": "$95" }, { "name": "Vintage rose", "note": "A short shelf. Ask first.", "price": "$180" } ] }, { "title": "Spirits", "items": [ { "name": "Aged rye", "note": "Neat, one large cube.", "price": "$140" }, { "name": "Single malt", "note": "Islay. Bring water.", "price": "$160" } ] } ] } }, { "block_key": "cta", "title": "Closing CTA", "slot": "cta", "sort_order": 1, "content": { "background": "band", "heading": "The list closes at nine", "text": "Send your name and party. We reply the same day.", "primaryLabel": "Request the guest list", "primaryUrl": "/contact" } } ] }, { "slug": "/about", "title": "The House", "template_key": "default", "blocks": [ { "block_key": "heading", "title": "Heading", "slot": "main", "sort_order": 1, "content": { "text": "The House", "level": 1 } }, { "block_key": "rich-text", "title": "Story", "slot": "main", "sort_order": 2, "content": { "html": "
Gotham House keeps late hours behind an unmarked door. We run four nights a week and hold the rest of the week back.
The rooms are dark by design. The bar is long. The list is short. Members come first, and their guests come with them.
" } }, { "block_key": "divider", "title": "Divider", "slot": "main", "sort_order": 3, "content": { "variant": "ornament", "icon": "lucide:diamond" } }, { "block_key": "quote", "title": "Quote", "slot": "main", "sort_order": 4, "content": { "style": "block", "align": "center", "quote": "Come late. Stay later.", "attribution": "The House" } } ] }, { "slug": "/blog", "title": "The Journal", "template_key": "blog-index", "blocks": [ { "block_key": "card", "title": "Post: The Door", "slot": "main", "sort_order": 1, "content": { "layout": "vertical", "title": "How the door works", "text": "The list, the card and the guests. What to send and when.
", "link": "/blog/how-the-door-works", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: A Night", "slot": "main", "sort_order": 2, "content": { "layout": "vertical", "title": "A night at the house", "text": "From the first pour to the last record. How the evening runs.
", "link": "/blog/a-night-at-the-house", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: The Cellar", "slot": "main", "sort_order": 3, "content": { "layout": "vertical", "title": "Notes from the cellar", "text": "What we pour after midnight and why the list stays short.
", "link": "/blog/notes-from-the-cellar", "linkLabel": "Read on" } } ] }, { "slug": "/blog/how-the-door-works", "title": "How the door works", "template_key": "article", "parent_slug": "/blog", "blocks": [ { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "How the door works", "level": 1 } }, { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "Send your name and party by nine. We hold the list until then and reply the same day.
Members lead. Guests come with them, and there is a cap. Bring your card. The door checks it.
" } } ] }, { "slug": "/blog/a-night-at-the-house", "title": "A night at the house", "template_key": "article", "parent_slug": "/blog", "blocks": [ { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "A night at the house", "level": 1 } }, { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "Doors open at nine. The first set starts slow. The main room fills after eleven and holds until the lights come up.
The cellar bar stays quiet. That is the point. Records, a nightcap and the last pour.
" } } ] }, { "slug": "/blog/notes-from-the-cellar", "title": "Notes from the cellar", "template_key": "article", "parent_slug": "/blog", "blocks": [ { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "Notes from the cellar", "level": 1 } }, { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "The list is short by choice. We pour champagne by the glass, keep a bench of rye and hold a small shelf for members who ask.
Tell the host what you are drinking. The rest follows.
" } } ] }, { "slug": "/contact", "title": "The Door", "template_key": "contact", "blocks": [ { "block_key": "contact-form", "title": "Guest List Enquiry", "slot": "main", "sort_order": 1, "content": { "heading": "Request the guest list", "description": "Send your name, the night and the party. We reply the same day.", "submitLabel": "Send to the door", "successMessage": "Thank you. Your name is with the door. We will reply by email.", "fields": [ { "name": "name", "label": "Your name", "type": "text", "required": true, "width": "half" }, { "name": "email", "label": "Email", "type": "email", "required": true, "width": "half" }, { "name": "party", "label": "Party size", "type": "text", "required": false, "width": "half" }, { "name": "message", "label": "Which night, and any notes", "type": "textarea", "required": true, "width": "full" } ], "formConfig": { "enabled": true, "captchaEnabled": false, "targetTable": "contact_submissions" } } }, { "block_key": "hours-location", "title": "Door & Hours", "slot": "aside", "sort_order": 1, "content": { "heading": "The Door", "hours": [ { "day": "Thursday", "hours": "9pm to late" }, { "day": "Friday to Saturday", "hours": "9pm to 4am" }, { "day": "Sunday", "hours": "9pm to 2am" }, { "day": "Monday to Wednesday", "closed": true } ], "specialHoursNote": "Members' Night runs Saturday. Card on the door.", "address": "1 Vane Court\nThe Old Quarter", "phone": "+1 555 0139" } } ] }, { "slug": "/login", "title": "Members", "template_key": "auth", "blocks": [ { "block_key": "auth-form", "title": "Sign in", "slot": "main", "sort_order": 1, "content": { "default_tab": "login", "show_social": false } }, { "block_key": "text", "title": "Foot", "slot": "footer", "sort_order": 1, "content": { "text": "Members book priority nights and private booths.
" } } ] } ], "menu_items": [ { "menu": "main", "label": "Home", "page_slug": "/", "sort_order": 1 }, { "menu": "main", "label": "The House", "page_slug": "/about", "sort_order": 2 }, { "menu": "main", "label": "The Journal", "page_slug": "/blog", "sort_order": 3 }, { "menu": "main", "label": "The Door", "page_slug": "/contact", "sort_order": 4 } ] }