tailthemes
all-access

sent here for Carafe

cafe website template tailwindReact and HTML source

local businessnew

Carafecafe website template Tailwind

Carafe is a cafe website template built in Tailwind and React for an independent all-day café or bistro, and for the freelancer or two-person agency handing one over on a fixed fee.

Live Preview
$18
both modes at 1280px
Carafe – All-Day Café & Bistro home page, light mode
Carafe – All-Day Café & Bistro home page, light mode
Carafe – All-Day Café & Bistro home page, dark mode
lightdark
84 / 84
light / dark tokens
2
modes, both designed
1
DOM, rendered twice

Its signature is the clipped slip.

cafe website template tailwindall-day cafe website templatebistro website template reactcoffee shop website template nextjsbrunch restaurant website template
$18one-time · unlimited projects
50components · every one pictured below
Live Preview
  • unlimited projects, client work included
  • 12 months of updates
  • 14 days, no questions
license terms

AGENTS.md and 4 skills ship in the zip, so your own agent keeps changing it after you buy.

docs: install, use, customize
0113

pages, composed from 23 sections

Every page is a real render from the publish gate, in the mode on show. Open any of them in the live preview.

The menu card is set once a season; today's soup, a dish that sold through, the terrace closing for the season and “weekend brunch is walk-in only until the 27th” are dated paper sheets clipped over the card's corner, each one striking the row underneath it, hiding that row's photograph, and disappearing by itself the moment it expires. A slip is data rather than a notice: it carries a kind, a target, a date window and its typed lines, and slipsFor() throws at build time on an orphan target, a replaced dish the target service does not serve, an unknown hours row, a policy on a service that takes no bookings, or a window that ends before it starts. Thirteen routes ship. Five public pages, each of them built in both languages: a home page that opens on whichever of the five services is being served at the hour a visitor arrives, the whole card by time of day, hours and access and house rules, the booking policy, and the privacy notice. Then three that stay in one language: an editing guide, a living component styleguide, and a 404 that still says what is on. The fixture is one spine. Mireille, a 34-seat café-bistro on rue Beaubien Est in Rosemont, Montréal, with a bilingual card of 52 items across 10 sections and 5 services, 12 of them photographed and 40 rendered as type-only rows, because a menu component that only survives a dozen dishes with pictures has not been tested. Every figure on every page resolves through that one file: open until 17:00, laptops away until 14:30, the second batch of kouign-amann at 14:30 and usually gone by 11:00, the washed Sidamo that went on the grinder last Tuesday, and “card last changed Mon 14 Sep”, which is the maximum modified date over the whole card rather than a line somebody remembers to update. The editing guide is a route, not a PDF. /handover renders the six bands of the home page live under numbered stamps, maps every region on screen to the fixture field that fills it and the WordPress screen that will edit it, walks the four editing tasks a café owner performs after handover, shows all five slip kinds beside the five shapes the build refuses to draw, and states six boundaries plainly. The fixture is shaped as that content model key by key, so the WordPress block theme and its companion plugin are a port rather than a rewrite. Three presets ship as token swaps with identical composition: Zinc, a Paris-style zinc bar in stamp red; Cresson, a morning-and-brunch café in watercress green with a blush slip; Faïence, a tiled bakery-café in enamel cobalt with an apricot slip. Each is one attribute on the root element, and each was authored in OKLCH and verified pair by pair in light and dark across 84 tokens per mode. Twenty-two photographs were generated for this theme and ship with it: one counter at five hours of one day, twelve dishes, the room, the façade and its terrace, the grinder, and the same counter wiped down at dusk. The hero sets its type straight onto the photograph with no gradient scrim, because the overlay region of every plate that can be a hero was measured on the encoded file instead. Self-hosted Brygada 1918, Radio Canada and Sometype Mono, three faces for three materials: the card is typeset, the slip is typed, the chrome is UI. Built for Tailwind v4, Next.js 15 and React 19, with every colour, size, radius and face in theme.css. What it does not do is as deliberate. No cart, no checkout, no delivery, no PDF menu, no star ratings, no Instagram embed, no gift-card commerce, and no claim about a table being free. Booking is one documented provider seam plus a link to the café's own reservation page; takeaway is the same shape, a named link-out with the commission-free direct option stated, and no order form. A gift voucher is an enquiry, written by hand at the counter. Three things the build earns and states: no third-party script anywhere, so the site needs no cookie banner; access facts a wheelchair user can act on, a door 86cm wide, a washroom door of 80cm with a grab rail and tables at 74cm; and every photograph generated for this theme, with no stock. The site is bilingual fr-CA and en-CA from one string layer and one component tree, French served under /fr with a dropdown switch in the header on every page, foreign-language runs marked so a screen reader says them correctly on either build, and the enquiry form ships a Law 25 privacy notice in both languages naming what it collects, who reads it and how long it is kept.

0223 + 27

sections and primitives

You get the parts, not just the demo site. Every frame is a real capture from the theme's own styleguide page, and the source path under it is where the file lands in your project. 36 frames cover them, with 15 primitives sharing the ui/* frame.

token-sheet

src/components/token-sheet.tsx

The styleguide's token panel: surfaces, ink, the slip's own non-inverting material, status, the 1.250 type ladder and the three presets, every swatch reading its live custom property.

Carafe cafe website template Tailwind — token-sheet component at full size
1 / 36
0384

tokens, both modes

Change one variable and every part follows. Each badge is one token split down the middle: its light value on the left, its dark value on the right, with the theme's own paired ink on both halves.

roles9 of 84

hover or tab a badge for its name and both values, enter copies

supporting40
radius
0.25rem
0rem
9999px

The clipped slip: a square sheet of thin coloured paper held by a flat two-rectangle clip over a menu card's top-right corner, typed in mono with a stamp-red date box, bound to data by kind, target and a date window. A replaces, hours or policy slip strikes the row beneath it and hides that row's thumbnail; an expired slip disappears and the card underneath is the truth again. slipsFor() throws at build on an orphan target, a replaced dish not served in that daypart, an unknown hours row, a policy on an unbookable daypart, or an inverted date window. It recurs on /, /menu, /visit, /book and /components, each with a visible supersede.

every token

043

typefaces, self-hosted

Real woff2 files in src/fonts/, wired through next/font and licensed under OFL. Nothing is fetched from Google at build time, so the zip renders these letterforms offline. Scale ratio 1.25.

Carafe

Carafe is a cafe website template built in Tailwind and React for an independent all-day café or bistro, and for the freelancer or two-person agency handing one over on a fixed fee. Its signature is the clipped slip.

const { open, close } = useLedger("2026-03") // 0123456789

icons · lucide-react · stroke 2
13px
14px
16px
display
Brygada 1918
text
Radio Canada
mono
Sometype Mono
scaleratio 1.25
  • captionAg
  • smallAg
  • bodyAg
  • leadAg
  • d1Ag
  • d2Ag
  • d3Ag
  • d4Ag
05375–1920

every width is a real render from the publish gate

Four viewports, each one a render the gate produced and checked. Switch between them: the frame narrows exactly as a window does, because that is what it is.

home page at 1280px, light mode
Carafe cafe website template Tailwind — home page at 1280px
1280
061

every token and every part on one page

The styleguide route is not documentation about the theme. It is a page in the zip that renders the real components from the real tokens, so it stays true the day you change one.

07222

files in the zip

Two independently authored editions: React for applications, plus ready HTML, CSS and vanilla JavaScript for static hosts.

what unzipscarafe-1.0.0.zip
  • AGENTS.mdthe theme's own rules, written for an agent
  • .claude/skills/4 skills, each one job
    • add-page/SKILL.mdCompose a new Carafe route from existing sections or new ones
    • add-section/SKILL.mdGraft a new section into Carafe following the theme's own patterns
    • check-quality/SKILL.mdRun Carafe's own quality gate locally
    • rebrand/SKILL.mdApply a buyer's brand to Carafe
  • src/
    • theme.css84 tokens, light and dark
    • fonts.tsthe faces, wired to the type tokens
    • app/9 files
    • components/23 files
      • ui/33 files
    • assets/2 files, 1 markdown file
    • fonts/6 font files, 3 licenses
  • app/13 routes, plus layout.tsx and globals.css
  • theme.jsonthe manifest: tokens, components, pages
  • html/the framework-free edition
    • dist/13 compiled routes, deploy-ready — no build step
    • src/the Nunjucks source the routes compile from
  • scripts/build-html.ts · serve-html.ts — `bun run build:html` / `preview:html`
  • README.mdquickstart
  • 6 project filespackage.json · tsconfig.json · next.config.ts · postcss.config.mjs · env.d.ts · .gitignore
your agent reads these first
what it runs on
next >=15 <17react >=19 <20tailwind >=4 <5HTMLlucide-reactstandard license
install into a project you already have
$ bunx shadcn add @tailthemes/carafe

Your key goes in TAILTHEMES_LICENSE_KEY, and the registry entry goes in components.json. The snippet is on the docs page.

or run it standalone
$ unzip carafe.zip && bun install && bun dev
Read this theme's AGENTS.md
084

skills your agent can run

Your agent reads AGENTS.md before it edits, then runs the skill that fits the change. The skills are the theme's own, and the publish gate makes an agent complete every one of them in a scratch copy before the theme goes live.

the source

50 components, 13 pages and 84 tokens, as a Next.js project.

the kit

AGENTS.md carries the design spec. Each skill is one job written against it.

add-pageadd-sectioncheck-qualityrebrand
your agent

Claude Code, Codex, or any agent that reads AGENTS.md. It runs on your machine, on your own account.

the new page

Built from the theme's own sections, on the same tokens and the same rhythm.

the spec travels with the code

The source is yours to run, edit and deploy.

The spec ships inside the folder, so the page your agent adds next month is built by the same rules as the ten it came with. Nothing calls back here.

What the standard license covers
before you decide
What do I actually get?
A runnable Next.js >=15 <17 project — not a screenshot and not a component dump. 13 pages, 23 sections and 27 primitives, 84 light tokens with 84 dark overrides, self-hosted fonts, and every image generated for this theme. AGENTS.md and 4 skills ship inside the zip, so your own agent can keep changing it after you buy. The same pages also ship as a framework-free HTML edition, with local fonts and vanilla JavaScript.
Does it include the pages I'd otherwise have to build?
Carafe ships mireille — all-day café and bistro, the card, by time of day, hours, access and how to get in, booking a table, and what is walk-in, personal information, and what we do with it, mireille — café-bistro, du matin au soir, la carte, par moment de la journée, heures, accès et comment entrer, réserver une table, et ce qui est sans réservation, renseignements personnels, et ce que nous en faisons, editing guide, the parts, unassembled and that page is not on the card. Every one of them is a real route in the project with real content — you can open all of them in the live preview before you pay, and what you see there is what unzips.
Will it work with my stack?
Built for Tailwind >=4 <5, Next.js >=15 <17 and React >=19 <20. Runtime dependencies are lucide-react — nothing else is required. The styling is tokens and Tailwind utilities, so it drops into an existing app rather than asking you to adopt a framework.
How long before it stops looking like a template?
The palette, type and spacing are 84 named tokens in one file, with 84 overrides for dark mode — change those and every screen moves together, which is the whole reason the theme is built as a system rather than as pages. Nothing here claims a number of hours: how long it takes depends on how far you move it.
Can I use it for client work?
Yes. One payment, unlimited projects, client work included, and 12 months of updates. Fourteen days to change your mind, no questions asked. The full terms are published, and this page and that page are the same source.
activity
50
components
sections + primitives
13
pages
all in the preview
last updated
v1.0.0
roadmap
  • v1.0.0: Carafe 1.0.0: an all-day cafe and bistro site whose seasonal menu card is amended by dated slips that expire themselves.
  • v1.0.0 — thirteen-route bilingual all-day café and bistro template built on the clipped slip: the menu card is set once a season and every change to it is a dated paper sheet clipped over the card's corner, striking the row it supersedes and hiding that row's photograph, with slipsFor() throwing at build time on an orphan target, a replaced dish the target service does not serve, an unknown hours row, a policy on a service that takes no bookings, or a date window that ends before it starts
  • the HTML edition, and the /components showcase past its foundations stateplanned
  • the WordPress block theme and its companion plugin, which the fixture is already shaped forplanned
for agents

This listing is also a markdown document and a JSON endpoint. The theme's own agent kit is on the kit and agents plates above.

/api/themes/carafe
mcpsearch_themesget_themeget_componentdownload_theme