{ "demo": true, "settings": { "merge": { "site_title": "Ritual Coffee", "site_description": "A neighbourhood cafe and small-batch roastery." } }, "data_tables": [ { "key": "contact_submissions", "name": "Contact Submissions", "description": "Messages sent from the cafe contact form.", "primary_key": "id", "columns": [ { "key": "name", "label": "Name", "type": "text", "required": true }, { "key": "email", "label": "Email", "type": "email", "required": true }, { "key": "reason", "label": "Reason", "type": "text", "required": false }, { "key": "message", "label": "Message", "type": "text", "required": true } ] } ], "menu_items": [ { "menu": "main", "label": "Home", "page_slug": "/", "sort_order": 0 }, { "menu": "main", "label": "Menu", "url": "/#menu", "sort_order": 1 }, { "menu": "main", "label": "About", "page_slug": "/about", "sort_order": 2 }, { "menu": "main", "label": "Journal", "page_slug": "/blog", "sort_order": 3 }, { "menu": "main", "label": "Visit", "page_slug": "/contact", "sort_order": 4 } ], "pages": [ { "slug": "/", "title": "Ritual Coffee", "template_key": "default", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Open from 7", "headline": "Coffee worth slowing down for", "subheadline": "We roast in small batches and pull every shot to order.", "ctaPrimary": { "text": "See the menu", "url": "/#menu" }, "ctaSecondary": { "text": "Find us", "url": "/contact" }, "minHeight": "50vh" } }, { "block_key": "coffee:featured_pour", "title": "Featured Pour", "slot": "main", "sort_order": 1, "content": { "label": "This week", "origin": "Single origin", "name": "Guji Highlands", "tasting": "

Bright and floral. Notes of peach, jasmine and brown sugar.

", "price": "6.00", "currency": "$" } }, { "block_key": "menu-list", "title": "Menu", "slot": "main", "sort_order": 2, "content": { "heading": "On the board", "intro": "Prices are for takeaway. Add fifty cents to dine in.", "currency": "$", "columns": 2, "sections": [ { "title": "Espresso", "items": [ { "name": "Espresso", "description": "Double shot", "price": "4.00" }, { "name": "Flat white", "price": "5.00" }, { "name": "Latte", "price": "5.50" }, { "name": "Batch filter", "description": "Rotating single origin", "price": "5.00", "badges": [{ "label": "Filter" }] } ] }, { "title": "Kitchen", "items": [ { "name": "Butter croissant", "price": "5.50" }, { "name": "Sourdough toast", "description": "With jam or honey", "price": "6.00" }, { "name": "Bacon and egg roll", "price": "12.00" }, { "name": "Granola bowl", "description": "Oats, yoghurt, seasonal fruit", "price": "11.00", "badges": [{ "label": "V" }] } ] } ] } }, { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 3, "content": { "heading": "Come and sit", "address": "12 Baker Lane\nNorthbridge", "phone": "08 1234 5678", "hours": [ { "day": "Monday", "hours": "7:00 - 15:00" }, { "day": "Tuesday", "hours": "7:00 - 15:00" }, { "day": "Wednesday", "hours": "7:00 - 15:00" }, { "day": "Thursday", "hours": "7:00 - 15:00" }, { "day": "Friday", "hours": "7:00 - 16:00" }, { "day": "Saturday", "hours": "8:00 - 16:00" }, { "day": "Sunday", "closed": true } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "address": "12 Baker Lane, Northbridge", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/about", "title": "About", "template_key": "default", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Our story", "headline": "One roaster, one room", "subheadline": "We started on a single machine and never grew out of caring about it.", "minHeight": "auto" } }, { "block_key": "rich-section", "title": "Story", "slot": "main", "sort_order": 1, "content": { "eyebrow": "Why we roast", "heading": "Fresh, not fast", "body": "

We roast twice a week and rest every batch before it hits the hopper. That means the coffee you drink was roasted days ago, not months.

Everything on the board is made in-house. The croissants are laminated overnight. The jam is cooked in small pots on the back bench.

", "mediaPosition": "right" } }, { "block_key": "coffee:brew_guide", "title": "Brew Guide", "slot": "main", "sort_order": 2, "content": { "kicker": "Make it at home", "method": "V60 pour-over", "intro": "This is how we brew filter on the bar. Scale it up or down by the ratio.", "ratio": "1:16", "grind": "Medium-fine", "water": "300g", "temperature": "94C", "time": "3:00", "steps": [ { "title": "Rinse and dose", "text": "Rinse the paper. Add 19g of coffee and level the bed." }, { "title": "Bloom", "text": "Pour 45g of water. Wait 40 seconds." }, { "title": "Pour in stages", "text": "Pour in slow circles to 300g by two minutes." }, { "title": "Draw down", "text": "Let it finish by three minutes. Swirl and serve." } ] } }, { "block_key": "team", "title": "Team", "slot": "main", "sort_order": 3, "content": { "heading": "Behind the bar", "members": [ { "name": "Mara", "role": "Head roaster", "bio": "Runs the roaster and tastes every batch." }, { "name": "Theo", "role": "Baker", "bio": "In before the birds. Owns the croissants." }, { "name": "Priya", "role": "Barista", "bio": "Knows your order before you say it." } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/blog", "title": "Journal", "template_key": "blog-index", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "blog-hero", "title": "Journal Hero", "slot": "featured", "sort_order": 0, "content": { "title": "The Journal", "subtitle": "Notes from the roaster and the bar." } }, { "block_key": "card", "title": "Post: Guji", "slot": "main", "sort_order": 0, "content": { "title": "Meet the Guji Highlands", "text": "Our new single origin is bright, floral and easy to love.", "link": "/blog/meet-the-guji-highlands", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: Roasting week", "slot": "main", "sort_order": 1, "content": { "title": "A week on the roaster", "text": "How we plan a roasting week and why we rest every batch.", "link": "/blog/a-week-on-the-roaster", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: Filter", "slot": "main", "sort_order": 2, "content": { "title": "How we brew filter", "text": "The recipe we use on the bar, step by step.", "link": "/blog/how-we-brew-filter", "linkLabel": "Read on" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/blog/meet-the-guji-highlands", "parent_slug": "/blog", "title": "Meet the Guji Highlands", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "Meet the Guji Highlands" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

Our new single origin comes from the Guji zone in southern Ethiopia. It is washed, which keeps it clean and bright.

We taste peach and jasmine up front, then a soft brown sugar finish. It works as espresso and shines as filter.

Come in this week and try it on the bar.

" } }, { "block_key": "coffee:roast_profile", "title": "Roast Profile", "slot": "main", "sort_order": 2, "content": { "origin": "Single origin", "name": "Guji Highlands", "producer": "Smallholders, Guji zone", "roastLevel": "Medium", "notes": "

Peach, jasmine, brown sugar.

", "process": "Washed", "varietal": "Heirloom", "altitude": "1900-2100 masl" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/blog/a-week-on-the-roaster", "parent_slug": "/blog", "title": "A week on the roaster", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "A week on the roaster" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

We roast on Tuesdays and Fridays. Each batch is small, and we rest it before it goes on the bar.

Resting lets the coffee settle after roasting. Pulled too soon, it tastes sharp and gassy. Given a few days, it opens up.

That is why the date on the bag matters more than the date on the door.

" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/blog/how-we-brew-filter", "parent_slug": "/blog", "title": "How we brew filter", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "How we brew filter" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

Filter is the clearest way to taste a coffee. We keep the recipe simple so you can repeat it at home.

Weigh the coffee and the water. Keep the grind even. Pour in slow circles and give it room to draw down.

" } }, { "block_key": "coffee:brew_guide", "title": "Brew Guide", "slot": "main", "sort_order": 2, "content": { "kicker": "The recipe", "method": "V60 pour-over", "ratio": "1:16", "grind": "Medium-fine", "water": "300g", "temperature": "94C", "time": "3:00", "steps": [ { "title": "Rinse and dose", "text": "Rinse the paper. Add 19g and level the bed." }, { "title": "Bloom", "text": "Pour 45g. Wait 40 seconds." }, { "title": "Pour", "text": "Slow circles to 300g by two minutes." }, { "title": "Finish", "text": "Draw down by three minutes. Serve." } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/contact", "title": "Visit", "template_key": "contact", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 0, "content": { "heading": "Find us", "address": "12 Baker Lane\nNorthbridge", "phone": "08 1234 5678", "hours": [ { "day": "Monday", "hours": "7:00 - 15:00" }, { "day": "Tuesday", "hours": "7:00 - 15:00" }, { "day": "Wednesday", "hours": "7:00 - 15:00" }, { "day": "Thursday", "hours": "7:00 - 15:00" }, { "day": "Friday", "hours": "7:00 - 16:00" }, { "day": "Saturday", "hours": "8:00 - 16:00" }, { "day": "Sunday", "closed": true } ] } }, { "block_key": "contact-form", "title": "Contact Form", "slot": "main", "sort_order": 1, "content": { "heading": "Say hello", "description": "Booking a table for six or more? Send us a note and we will sort it.", "submitLabel": "Send message", "successMessage": "Thanks. We will get back to you soon.", "formConfig": { "targetTable": "contact_submissions" }, "fields": [ { "name": "name", "label": "Name", "type": "text", "required": true, "width": "half" }, { "name": "email", "label": "Email", "type": "email", "required": true, "width": "half" }, { "name": "reason", "label": "Reason", "type": "text", "required": false, "width": "full" }, { "name": "message", "label": "Message", "type": "textarea", "required": true, "width": "full" } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } ] }, { "slug": "/login", "title": "Login", "template_key": "auth", "blocks": [ { "block_key": "auth-form", "title": "Auth Form", "slot": "main", "sort_order": 0, "content": { "default_tab": "login", "show_social": false } }, { "block_key": "text", "title": "Footer Note", "slot": "footer", "sort_order": 0, "content": { "text": "

Members get first pick of new roasts.

" } } ] } ] }