Overview

Patissa template home pages

An elegant, animated HTML template for French pâtisseries, pastry shops and pastry schools, in gold on white marble and black. Patissa ships three home pages, a light and a dark theme, right-to-left support, and pâtisserie logic that is worked out rather than typed in: masterclass dates and seats left, a counter pre-order by bake batch, a portions calculator for whole tarts and entremets, gift vouchers with a live preview, the salon’s open-now status and a shop with a bag, coupon, chilled shipping and tax.

What’s included

  • 3 home pages, each with its own scroll moment: the lamination fold (a dough sheet folds in thirds, 3 → 9 → 27 → 81 layers), a spiral of fruit settling on a tart, and star anise, vanilla and cinnamon floating on three depths
  • Masterclass booking in four steps: the class, a date from its repeat rule with the seats left, seats and details, confirm
  • Counter pre-order by bake batch: the morning and afternoon batches with their own cut-offs, pickup windows and pieces left
  • Tarts and entremets in four sizes with a portions calculator (guests × appetite) and the earliest pickup date
  • Gift vouchers: a value or a masterclass, three designs, a live card with its code and expiry
  • Light and dark mode on one switch in every header, remembered between visits and applied before the page paints
  • Right-to-left stylesheets and a flag language picker in every header
  • WebGL Marble Veins under the night bands and a flat-shaded macaron turning in the footer
  • Torch Glaze preloader, Tart Slice reveals (a clock-wipe with a gold knife-line), gold-leaf hover, Swiper sliders, Fancybox
  • The shop: filters, sort and search, product, bag, coupon, free-shipping meter, tax, checkout with an order number, wishlist
  • Menu with dietary filters, chefs and profiles, gallery, journal with six post formats, FAQ with search, accounts, coming soon, 404
  • Fully responsive, zero console errors
📄 30 HTML files

Getting Started

Thank you for choosing Patissa. Follow the steps below to get your site live.

1. Open locally

Unzip the downloaded package and open patissa/index.html in any modern browser (Chrome, Firefox, Edge, Safari). No build tools or server are required — booking, pre-order, the calculator, vouchers and the shop all work straight from the files.

2. Deploy to a server

Upload the contents of the patissa/ folder to your hosting provider using an FTP client (such as FileZilla) or your hosting control panel. Once uploaded, navigate to your domain and the template will load immediately.

3. Customise

All custom styling lives in assets/css/style.css (with a numbered Table of CSS at the top) and assets/css/responsive.css. Colours and fonts are controlled by CSS variables — see Colors & Fonts. Hours, batches, classes, sizes, vouchers and products live in one place — see Pâtisserie Logic.

Tip: Replace the neutral placeholder images in assets/img/ with your own photography at the same dimensions for the best result. Product shots look best on a pure white ground.

File Structure

Below is an overview of the key files and folders included in this template.

index.html / homepage-2.html / homepage-3.htmlThree home pages: Pâtisserie on white marble (the lamination fold), Masterclasses on noir (the fruit spiral), Salon & Counter with the logo centred (the spice cut-outs)
about.html / history.htmlThe maison’s story, the chefs strip, values and the timeline; the history spine year by year
chefs.html / chef-details.htmlThe six chefs; a chef’s profile with specialities and her masterclasses
gallery.htmlMasonry gallery with filter tabs and a lightbox
faq.htmlQuestions by topic with search
masterclasses.html / masterclass-details.htmlEvery class with level tabs, a month filter, search and its next session with seats; a class with its syllabus and dates
book-a-class.htmlThe four-step masterclass booking
gift-vouchers.htmlThe voucher designer with a live preview
menu.htmlThe salon’s menu with category tabs, dietary filters and search
pre-order.htmlCounter pre-order by bake batch
tarts-entremets.htmlWhole tarts and entremets: the portions calculator and the order
services.htmlWeddings, dessert tables, companies, private classes and the quote request
shop.html / product-details.html / cart.html / checkout.html / wishlist.htmlThe shop: filters, sort and search, product, bag, checkout, wishlist
blog.html / blog-details.htmlThe journal with six post formats, an article with reading time, share and comments
contact.htmlContact cards with the salon’s live status, the week’s hours, the form and the map
login.html / register.html / forgot-password.htmlAccount pages
coming-soon.html / 404.htmlCountdown to the pastry school’s opening, error page
sendmail.phpAJAX mail handler for the contact and comment forms (see Contact Form)
assets/css/style.cssAll custom styles, numbered Table of CSS (19 sections)
assets/css/responsive.cssDesktop-first breakpoints 1399 / 1199 / 991 / 767 / 575, plus wide screens from 1600 and 1960
assets/css/style.rtl.css / responsive.rtl.cssThe right-to-left twins (see RTL)
assets/css/plugins/Bootstrap (LTR and RTL), Swiper, Fancybox (vendor CSS)
assets/js/main.jsAll custom scripts, numbered JS INDEX (37 blocks)
assets/js/plugins/jQuery, Bootstrap, Swiper, Fancybox, GSAP, ScrollTrigger
assets/img/Images, one folder per section (see Images)
assets/fonts/theme-icons/The sun and moon of the theme switch, loaded locally
assets/webfonts/ + assets/css/fontawesome-all.cssFont Awesome Free, loaded locally

Folder Structure

The package unzips to two folders: Documentation/ (this guide) and patissa/, the template. Every page sits in the template’s root; everything the pages load sits under assets/:

patissa/
├── *.html                              the 30 pages, all in the root (see File Structure)
├── sendmail.php                        the AJAX mail handler for the forms
└── assets/
    ├── css/
    │   ├── style.css                   all custom styles, numbered Table of CSS (19 sections)
    │   ├── style.rtl.css               the right-to-left twin of style.css
    │   ├── responsive.css              breakpoints 1399 / 1199 / 991 / 767 / 575
    │   ├── responsive.rtl.css          the right-to-left twin of responsive.css
    │   ├── fontawesome-all.css         Font Awesome Free, loaded locally
    │   └── plugins/                    vendor stylesheets (Bootstrap LTR + RTL, Swiper, Fancybox)
    ├── js/
    │   ├── main.js                     all custom scripts, numbered JS INDEX (37 blocks)
    │   └── plugins/                    jQuery, Bootstrap, GSAP, ScrollTrigger, Swiper, Fancybox
    ├── fonts/
    │   └── theme-icons/                the sun and moon of the theme switch
    ├── webfonts/                       Font Awesome Free font files
    └── img/                            images, one folder per section
        ├── banner/                      12 files
        ├── blog/                        10 files
        ├── decor/                       9 files
        ├── flags/                       6 files
        ├── fruit/                       7 files
        ├── gallery/                     38 files
        ├── home/                        14 files
        ├── icons/                       24 files
        ├── logo/                        4 files
        ├── menu/                        3 files
        ├── preloader/                   2 files
        ├── shop/                        22 files
        ├── team/                        11 files
        └── textures/                    1 files

Colors & Fonts

The whole design is driven by CSS variables declared at the top of style.css. Change a token once and every section, button and card updates. Colours used with transparency have an -rgb twin (for example --pt-gold-rgb) — change both together.

Gold--pt-gold
Gold Ink (Text)--pt-gold-text
Gold Script--pt-gold-script
Champagne--pt-champagne
Noir--pt-noir
Ivory--pt-ivory
White Ground--pt-bg
Marble--pt-marble
Porcelain--pt-porcelain
Heading--pt-heading
Body--pt-text
Leaf (Open Now)--pt-leaf-text

Gold draws the diamond rules, the icons, the frames and the gold buttons (black text on gold). Gold ink is gold’s partner for small text on light grounds; gold script colours the large handwritten eyebrows. Noir is the button, the night bands and the footer. White, marble and porcelain are the section grounds. --pt-bg, --pt-surface, --pt-heading and --pt-text are the semantic names the components use — the dark theme swaps those (see Light & Dark Mode).

Fonts

Two Google Fonts are loaded in the head of each page: Montserrat (the spaced caps titles, navigation, buttons and body) and Great Vibes (the gold script of the eyebrows, signatures and figures). Swap them by editing the Google Fonts link and the --pt-ff-body / --pt-ff-script variables.

Logo

The logo is a small meringue tartlet over PATISSA in spaced capitals. It ships as ready-made PNG files in assets/img/logo/:

  • logo.png — for light grounds: the headers, the offcanvas
  • logo-light.png — for dark grounds: the Home 2 header, coming soon, dark mode
  • logo-footer.png — the footer lockup with the script line “Pâtisserie Française”
  • favicon.png — the browser tab icon

To use your own logo, replace these files; the header sizes the logo by its height.

Light & Dark Mode

Every header (and the mobile menu) has a theme switch. The choice is saved in the browser under the key patissa-theme and applied by a one-line script in the <head> before the page paints. The switch sets data-theme="dark" on the <html> tag.

Dark Ground--pt-bg
Dark Surface--pt-surface
Dark Night Band--pt-night
Dark Heading--pt-heading
Dark Gold Ink--pt-gold-text
  • Tokens — the dark values sit in one block, [data-theme="dark"] { … }, right after :root.
  • Bands that stay dark — sections with the class is-night (the two bakes, the fruit spiral, the footer) are black marble in both themes. A light card inside one takes pt-on-light.
  • Product tiles — the counter and shop tiles stay white in both themes, the ground of the product photographs.
  • Start dark — add data-theme="dark" to the <html> tag of each page; the switch still works.

Pâtisserie Logic

The figures on every page come from one data block, JS block 09 Patissa Data near the top of main.js (var PATISSA). Edit it once and the cards, dates, seats, prices and totals follow. Prices are in US dollars; times are minutes after midnight (450 = 7:30 am); weekdays run 0 = Sunday to 6 = Saturday.

hoursThe salon’s hours for each weekday, or null when closed. The top bar, the footer and the contact page show open now / opens at, and the week’s table marks today.
batches / bakeDaysThe two bakes: when each comes out of the oven, its pickup window and its pre-order cut-off (cutDay -1 = the evening before); which batches each weekday bakes.
counterThe pastries of the counter: category, price, the batches that bake them and the pieces a batch makes.
sizes / appetite / cakesThe four sizes (diameter, dessert slices, price factor), the three appetites (a factor on the slices), and the whole tarts and entremets with their 16 cm price and notice in days.
classes / chefsThe masterclasses: level, hours, price, seats and a repeat rule — weekly on a weekday or monthly on the nth weekday — with the chef and the syllabus.
vouchersThe voucher values ($50, $100, $150, $250), your own amount from $25 to $500, the designs and the validity (12 months).
products / shopShop products and the rules: free chilled shipping from $75, otherwise $9 (express $18), tax 8.875%, coupon PATISSA10 for 10% off.
menu / postsThe salon’s menu with its dietary marks, and the journal’s posts.

The salon’s week

MondayClosed
Tuesday7:30 am – 7:00 pm
Wednesday7:30 am – 7:00 pm
Thursday7:30 am – 7:00 pm
Friday7:30 am – 7:30 pm
Saturday8:00 am – 7:30 pm
Sunday8:00 am – 2:00 pm

Masterclass booking

A class’s next 8 sessions come from its repeat rule (a session that has started drops out). Seats taken per session are a stand-in worked out from the date so the demo looks lived-in, with about one session in seven full — replace seatsTaken() in block 10 Maison Clock with your own bookings. The wizard (block 26) never blocks on Continue; Confirm checks the details and gives a reference.

Counter pre-order

The morning batch is out of the oven at 7:30 am, for pickup 8:00 am – 12:00 pm, and takes pre-orders until 6:00 pm the evening before. The afternoon batch is out at 2:30 pm, for pickup 3:00 pm – 7:00 pm, ordered by 11:00 am the same day. The page offers today and the next 6 days, closed days greyed out; each pastry shows the pieces left in that batch and cannot be ordered beyond them (block 27).

Portions calculator

Slices needed = guests × the appetite factor, rounded up. The smallest size that serves them is advised; past the largest, the largest cakes are added until the smallest that covers the rest. Sizes: 16 cm (6 slices, ×1), 20 cm (10 slices, ×1.55), 24 cm (14 slices, ×2.15), 28 cm (20 slices, ×2.9). Price = the recipe’s 16 cm price × the factor (block 24).

Worked examples: 12 guests, a dessert slice: 12 slices → 24 cm, Tarte Au Citron Meringuée ($34 at 16 cm) = $73. 30 guests, a generous slice: 42 slices → 28 cm + 28 cm + 16 cm, Entremet Pistache ($50) = $340.

How the shop totals

Worked example: two Macarons Chocolat boxes ($44); shipping $9.00 (under $75); tax 8.875% $3.91 — $56.91. With the coupon PATISSA10: $44 − $4.40, shipping $9.00, tax $3.51 — $52.11.

The bag, the wishlist and the applied coupon are kept in the browser (localStorage). The first visit starts with a small demo bag and wishlist; to start empty, set the two demo lists in doShop() (block 31 The Shop) to []. Checkout, booking, pre-order, the cake order and vouchers confirm on screen with a reference — connect them to your own systems to take real orders.

WebGL Layers

Block 08 draws two layers. Marble Veins — long veins, thin threads and a few gold seams flowing slowly — sits under the night bands and the footer as one canvas:

<canvas class="pt-gl" data-gl="marble" aria-hidden="true"></canvas>

The macaron in the footer is a small mesh (two domed shells on ruffled feet round the filling) turning in flat, three-step shading: <canvas class="footer-macaron" data-macaron>.

  • Colours — the marble reads --gl-1 (ground), --gl-2 (veins), --gl-3 (gold) and --gl-alpha; the macaron reads --mac-shell, --mac-fill and --mac-rim.
  • Performance — a layer runs only while it is on screen and the tab is visible; reduced motion gets one still frame.
  • Remove one — delete the canvas; nothing else depends on it.

RTL (Right To Left)

Right to left comes from the stylesheets, not from separate pages: the language picker beside the light / dark switch lists the languages that read left to right and right to left. Choosing Arabic or Hebrew stores the direction (key patissa-dir) and reloads; the script in <head> then sets dir="rtl" and swaps the three stylesheets for the files named in their data-rtl attribute. Nothing is translated — you bring your own copy. To make a page right to left for good:

<html lang="ar" class="no-js" dir="rtl">
assets/css/plugins/bootstrap.min.css→ assets/css/plugins/bootstrap.rtl.min.css
assets/css/style.css→ assets/css/style.rtl.css
assets/css/responsive.css→ assets/css/responsive.rtl.css
Editing the styles: the RTL files are mirrored twins of the LTR files, made with RTLCSS, with a short RTL fixes block at the end of style.rtl.css. After changing style.css, regenerate the twin with npx rtlcss style.css style.rtl.css and copy the fixes block back.

JavaScript Guide

All custom behaviour lives in assets/js/main.js, wrapped in a jQuery IIFE and organised into 37 numbered blocks. Each block is a self-contained doSomething() function that skips pages where its section is not present:

  • 01 — Preloader
  • 02 — Sticky Header
  • 03 — Offcanvas Menu
  • 04 — Scroll Reveals
  • 05 — Back To Top
  • 06 — Anchor Scroll
  • 07 — Light & Dark Mode, Direction
  • 08 — WebGL Marble & Macaron
  • 09 — Patissa Data
  • 10 — Maison Clock
  • 11 — Custom Select
  • 12 — Meters
  • 13 — Hero Sliders
  • 14 — Card Sliders
  • 15 — Accordion
  • 16 — Filter Tabs
  • 17 — Grid Search
  • 18 — Newsletter
  • 19 — Choice Cards
  • 20 — The Lamination Fold
  • 21 — Floating Cut-Outs
  • 22 — Upcoming Sessions
  • 23 — Fruit Spiral
  • 24 — Portions Calculator
  • 25 — Class Finder
  • 26 — Class Booking
  • 27 — Counter Pre-Order
  • 28 — Gift Vouchers
  • 29 — Menu Filters
  • 30 — Contact Form
  • 31 — The Shop
  • 32 — Account Forms
  • 33 — History Timeline
  • 34 — Article Tools
  • 35 — Demo Forms
  • 36 — Launch Countdown
  • 37 — FAQ Search
Reveals: add pt-slice to a photo frame (it is uncovered in a clock-wipe from twelve o’clock, a gold knife-line turning with the cut), pt-fade to text and cards (a soft rise) and pt-rule for the diamond rule. data-delay="0.2" staggers any of them. pt-leafy on a card adds the gold-leaf hover.
Scroll moments: the lamination fold and the fruit spiral are scrubbed by their own section’s travel; neither pins the page. The fruit’s resting places are plain CSS, so the finished tart shows without JavaScript. Cut-outs with pt-float and data-depth="1|2|3" drift in, float and follow the pointer.

Every animation respects prefers-reduced-motion: content appears in its final state.

Images

The download package ships with neutral placeholder images so you can see every layout at the correct dimensions. Replace them with your own photos using the same file names. Images are grouped inside assets/img/:

img/banner/Wide page-title banners and photo bands — 12 files: 1920×500, 1920×493, 2817×1008, 1300×557, 1920×703, 1920×727, …
img/blog/Journal posts and feature cards — 10 files: 1300×792, 1300×830
img/decor/Spice, nut and chocolate cut-outs that float at section edges, and the gold-leaf flecks of the hover — 9 files: 285×330, 103×100, 120×106, 109×110, 366×310, 523×304, …
img/flags/The language picker’s flags (SVG, included) — 6 files: SVG
img/fruit/The drawn fruit and tart shell of the Home 2 spiral — 7 files: 133×130, 137×140, 101×137, 125×125, 99×103, 131×140, …
img/gallery/Gallery, class and home photography — 38 files: 1300×1135, 1000×1000, 1300×1300, 1000×2000, 1920×700, 1300×614, …
img/home/Home page photos and cut-outs — 14 files: 800×623, 800×1350, 1408×2376, 1000×665, 2809×1064, 1000×1000, …
img/icons/Gold line icons, each in a gold and a champagne ink — 24 files: 128×128
img/logo/Logo, light logo, footer lockup and favicon — 4 files: 971×120, 64×64, 612×300
img/menu/Home previews in the mega menu — 3 files: 560×350
img/preloader/The meringue tartlet, raw and torched (the Torch Glaze preloader) — 2 files: 483×340
img/shop/Counter and shop product shots on white — 22 files: 800×800, 800×650
img/team/The chefs’ portraits — 11 files: 800×1449, 800×589, 1056×777
img/textures/Patissa’s white marble plate — 1 file: 2000×1200

The logo files, the line icons, the drawn fruit and tart, the meringue tartlets, the gold leaf, the marble plate and the language flags are included and ready to use. All demo photography shown on the live preview is for preview purposes only and is not included in the download.

Contact Form

The contact forms and the comment form post to sendmail.php, a lightweight AJAX mail handler. The newsletter, quote, job, booking, pre-order, cake order, voucher, checkout and account forms are demo forms: they confirm on screen and are ready to connect to your own systems. To activate the mail handler:

1. Set your email address

$email = 'example@example.com';

2. Upload to a PHP host

The form needs a server with PHP mail() support. Opened from your computer, it shows an “upload to a PHP-enabled host” notice instead.

3. Optional: enable Google reCAPTCHA v3

  • Create v3 keys for your domain in the Google reCAPTCHA admin console
  • In sendmail.php, replace YOUR_RECAPTCHA_V3_SECRET_KEY with your secret key
  • Add a hidden token field inside the form and load the reCAPTCHA script with your site key before </body>:
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response">

<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
  grecaptcha.ready(function () {
    grecaptcha.execute('YOUR_SITE_KEY', { action: 'contact' }).then(function (token) {
      document.getElementById('g-recaptcha-response').value = token;
    });
  });
</script>

Credits

  • Bootstrap 5.3.3
  • jQuery 3.7.1
  • Swiper 11
  • GSAP 3 + ScrollTrigger
  • Fancybox 3.5
  • Font Awesome Free
  • RTLCSS
  • Google Fonts: Montserrat, Great Vibes

All plugin files and icon fonts are loaded locally. The only external requests are the Google Fonts stylesheet, the Google Maps embeds and the video popups.

Support

If you have any questions or need help with the template, please reach out through the marketplace where you purchased the template: open the item there and send us your question from its support page. We aim to respond within 24–48 hours.