{ "demo": true, "settings": { "merge": { "site_title": "Petal & Crumb", "site_description": "A small patisserie baking cakes, pastries and seasonal treats." } }, "data_tables": [ { "key": "contact_submissions", "name": "Contact Submissions", "description": "Enquiries and cake orders sent from the 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": "Order", "page_slug": "/contact", "sort_order": 4 } ], "pages": [ { "slug": "/", "title": "Petal & Crumb", "template_key": "default", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Open from 8", "headline": "Cakes and pastries, baked fresh each morning", "subheadline": "A small patisserie on the corner. Everything is made by hand the day you eat it.", "ctaPrimary": { "text": "See the menu", "url": "/#menu" }, "ctaSecondary": { "text": "Order a cake", "url": "/contact" }, "minHeight": "50vh" } }, { "block_key": "pastel-dream:seasonal_specials", "title": "Seasonal Specials", "slot": "main", "sort_order": 1, "content": { "kicker": "This week", "heading": "On the counter now", "intro": "A short list of what we are proud of this week. It changes with the season.", "currency": "$", "items": [ { "name": "Strawberry tart", "note": "Vanilla custard, fresh strawberries, a thin glaze.", "price": "8.00", "badge": "New" }, { "name": "Pistachio croissant", "note": "Laminated overnight, filled with pistachio cream.", "price": "6.50", "badge": "Popular" }, { "name": "Lemon poppy loaf", "note": "Soft, tangy, dusted with sugar. Sold by the slice.", "price": "5.00", "badge": "" } ] } }, { "block_key": "menu-list", "title": "Menu", "slot": "main", "sort_order": 2, "content": { "heading": "The full menu", "intro": "Prices are for takeaway. We can box anything for a gift.", "currency": "$", "columns": 2, "sections": [ { "title": "Pastries", "items": [ { "name": "Butter croissant", "price": "5.00" }, { "name": "Pain au chocolat", "price": "5.50" }, { "name": "Almond croissant", "description": "Filled and topped with almond cream", "price": "6.50" }, { "name": "Morning bun", "description": "Orange and cinnamon", "price": "6.00", "badges": [{ "label": "V" }] } ] }, { "title": "Cakes and slices", "items": [ { "name": "Victoria sponge", "description": "By the slice", "price": "7.00" }, { "name": "Chocolate torte", "description": "Flourless", "price": "8.00", "badges": [{ "label": "GF" }] }, { "name": "Carrot cake", "price": "7.50" }, { "name": "Custard tart", "price": "6.00" } ] } ] } }, { "block_key": "pastel-dream:order_ribbon", "title": "Order Ribbon", "slot": "main", "sort_order": 3, "content": { "heading": "Order a cake for the weekend", "message": "Birthdays, gatherings, or just because. Tell us the flavour and the date.", "pickupNote": "Two days notice for custom cakes.", "ctaLabel": "Place an order", "ctaUrl": "/contact" } }, { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 4, "content": { "heading": "Come and see us", "address": "18 Rose Lane\nFremantle", "phone": "08 1234 5678", "hours": [ { "day": "Monday", "closed": true }, { "day": "Tuesday", "hours": "8:00 - 15:00" }, { "day": "Wednesday", "hours": "8:00 - 15:00" }, { "day": "Thursday", "hours": "8:00 - 15:00" }, { "day": "Friday", "hours": "8:00 - 16:00" }, { "day": "Saturday", "hours": "8:00 - 16:00" }, { "day": "Sunday", "hours": "9:00 - 14:00" } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "address": "18 Rose Lane, Fremantle", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/about", "title": "About", "template_key": "default", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Our story", "headline": "One oven, one small room", "subheadline": "We opened with a single oven and a short menu. We kept it that way on purpose.", "minHeight": "auto" } }, { "block_key": "rich-section", "title": "Story", "slot": "main", "sort_order": 1, "content": { "eyebrow": "How we bake", "heading": "Made the same day", "body": "
We start before dawn. The pastry is laminated the night before and baked in the morning, so it reaches you the same day it is made.
The menu is short because we make everything ourselves. When something is out, it is out until the next bake.
", "mediaPosition": "right" } }, { "block_key": "pastel-dream:bakers_note", "title": "Baker's Note", "slot": "main", "sort_order": 2, "content": { "kicker": "A note from the kitchen", "body": "Thank you for buying from a small shop. Every order helps us keep baking by hand. We taste each batch before it reaches the counter, and we would rather sell out than cut a corner.
", "signatureName": "Cara Wells", "signatureRole": "Baker and owner" } }, { "block_key": "team", "title": "Team", "slot": "main", "sort_order": 3, "content": { "heading": "The people at the bench", "members": [ { "name": "Cara", "role": "Baker and owner", "bio": "Laminates the pastry and runs the morning bake." }, { "name": "Jonah", "role": "Pastry chef", "bio": "Owns the tarts and the seasonal fruit." }, { "name": "Noor", "role": "Front of house", "bio": "Boxes your cake and knows the regulars." } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/blog", "title": "Journal", "template_key": "blog-index", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "blog-hero", "title": "Journal Hero", "slot": "featured", "sort_order": 0, "content": { "title": "The Journal", "subtitle": "Notes from the bench and the season." } }, { "block_key": "card", "title": "Post: Strawberries", "slot": "main", "sort_order": 0, "content": { "title": "Strawberries are in", "text": "The first good strawberries of the season arrived. Here is what we are making with them.", "link": "/blog/strawberries-are-in", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: Lamination", "slot": "main", "sort_order": 1, "content": { "title": "Why we laminate overnight", "text": "Cold dough and slow rests make a better croissant. This is how we do it.", "link": "/blog/why-we-laminate-overnight", "linkLabel": "Read on" } }, { "block_key": "card", "title": "Post: Custom cakes", "slot": "main", "sort_order": 2, "content": { "title": "How to order a custom cake", "text": "Flavours, sizes and lead times, so your order arrives the way you pictured it.", "link": "/blog/how-to-order-a-custom-cake", "linkLabel": "Read on" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/blog/strawberries-are-in", "parent_slug": "/blog", "title": "Strawberries are in", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "Strawberries are in" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "The first ripe strawberries came in this week. They are small, sweet, and they do not keep, so we use them fast.
This week they go into the strawberry tart and a plain sponge with cream. When they run out, we move on to the next fruit.
Come in early. The tarts tend to go before lunch.
" } }, { "block_key": "pastel-dream:cake_gallery", "title": "Cake Gallery", "slot": "main", "sort_order": 2, "content": { "heading": "What we made this week", "intro": "A few things that came out of the oven.", "currency": "$", "cakes": [ { "name": "Strawberry tart", "flavour": "Vanilla custard", "price": "8.00", "orderUrl": "/contact" }, { "name": "Strawberry sponge", "flavour": "Cream and jam", "price": "7.00", "orderUrl": "/contact" }, { "name": "Fruit galette", "flavour": "Seasonal", "price": "6.50", "orderUrl": "/contact" } ] } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/blog/why-we-laminate-overnight", "parent_slug": "/blog", "title": "Why we laminate overnight", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "Why we laminate overnight" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "A croissant is butter and dough folded many times. The butter has to stay cold, or it melts into the dough and the layers are lost.
We fold in the afternoon and rest the dough in the fridge overnight. Cold and slow gives an even rise and a light crumb.
In the morning we shape and bake. That is why the croissants are ready when we open and not before.
" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/blog/how-to-order-a-custom-cake", "parent_slug": "/blog", "title": "How to order a custom cake", "template_key": "article", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "How to order a custom cake" } }, { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "Tell us the date, the size, and the flavour. Send a photo if you have one in mind.
We need two days for most cakes and a week for larger ones. We will confirm the price before we start.
Pick up from the shop, or ask about local delivery.
" } }, { "block_key": "pastel-dream:order_ribbon", "title": "Order Ribbon", "slot": "main", "sort_order": 2, "content": { "heading": "Ready to order", "message": "Send us the details and we will reply with a quote.", "pickupNote": "Two days notice, a week for tiered cakes.", "ctaLabel": "Start an order", "ctaUrl": "/contact" } }, { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "slug": "/contact", "title": "Order", "template_key": "contact", "blocks": [ { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Petal & Crumb", "ctaLabel": "Order a cake", "ctaUrl": "/contact" } }, { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 0, "content": { "heading": "Find us", "address": "18 Rose Lane\nFremantle", "phone": "08 1234 5678", "hours": [ { "day": "Monday", "closed": true }, { "day": "Tuesday", "hours": "8:00 - 15:00" }, { "day": "Wednesday", "hours": "8:00 - 15:00" }, { "day": "Thursday", "hours": "8:00 - 15:00" }, { "day": "Friday", "hours": "8:00 - 16:00" }, { "day": "Saturday", "hours": "8:00 - 16:00" }, { "day": "Sunday", "hours": "9:00 - 14:00" } ] } }, { "block_key": "contact-form", "title": "Contact Form", "slot": "main", "sort_order": 1, "content": { "heading": "Send us a note", "description": "Ordering a cake or asking a question? Leave the details and we will get back to you.", "submitLabel": "Send", "successMessage": "Thanks. We will reply 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": "Petal & Crumb", "tagline": "A small patisserie, baked fresh each morning.", "email": "hello@petalandcrumb.test", "copyright": "Petal & Crumb" } } ] }, { "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 hear about seasonal bakes first.
" } } ] } ] }