Thirty-two pages of a stay-booking site — search, results with a map, listing detail, checkout, trips and a host dashboard — built twice over one token layer. Take the HTML/Bootstrap edition and open it off the disk, or take the Next.js edition and npm run dev. Same site, same pixels, one licence.
Two editions
Not a template with a React port bolted on afterwards. Both editions render from the same token package and load the same stylesheet bridge in the same order, which is why the two look identical page for page — and why a colour change lands in both from one edit.
Thirty-two .html files and the assets they need. Double-click index.html and the whole site works — offline, straight off the disk, with nothing installed and nothing compiled.
# nothing to install
open index.htmlmain-files/
index.html results.html listing.html …
components.html the style guide
assets/css assets/js assets/img
scss/ optional token sourceHanding finished markup to a back-end team, dropping into a PHP or Rails app, or shipping to a plain web root.
The same thirty-two pages as routes. Server components by default, a client island wherever something holds state, and Bootstrap's JavaScript replaced by eight React primitives written against Bootstrap's own class contract.
npm install
npm run dev
# http://localhost:3000apps/nextjs/
src/app/(site) (custom) (bare) route groups
src/components/site/ 15 islands
src/components/ui/ 8 primitives
src/data/ src/lib/ public/imgBuilding the product in React, where the template is the first commit rather than a reference to translate.
Everything not in this table is deliberately the same.
| HTML / Bootstrap | Next.js / React | |
|---|---|---|
| Getting it running | Double-click a file. No Node, no npm, no compile. | npm install, then npm run dev. |
| Header, footer, icons | Copied into all 32 pages, so each page stands alone. | One Header, Footer and icon sprite in the root layout. |
| Content | The nine homes, the journal and the help centre live in the markup. | Typed data in src/data/, rendered by the pages. |
| Behaviour | Bootstrap's data API plus vanilla scripts, one per concern. | React state, and eight primitives in src/components/ui/. |
| Bootstrap | The CSS and the JS, both bundled in the package. | The CSS only, from the npm package. |
| Images | Local files at fixed paths — swap a file, keep the name. | The same local files, served through next/image. |
| Where it deploys | Any web root or static host. Upload and done. | Anywhere Next runs — Node, or a platform that hosts it. |
What is in it
Page for page, one to one. Nothing is an edition-only extra, and nothing is a placeholder that says “your content here” — every page is written and filled, including the empty states, the 404 and the style guide.
Search to confirmation, and everything the guest does afterwards.
The pitch, the dashboard, and the wizard that lists a place.
The pages a booking site needs before anybody trusts it.
Validated properly, wired to nothing — see the FAQ.
The pages that are missing from most template packages.
How it is built
A booking front end is mostly state: which dates, how many guests, what it costs, what happens when the card declines. Norvik answers those once and answers them the same way in both editions.
Dates, guests and the booking reference travel in the query string, so the search, the listing, the checkout and the trip all agree — and every page stands up on a direct visit with nothing set. One quote() works out every total, which is why the price on the card and the price at checkout cannot drift apart.
Bootstrap, the twenty font slices and every image are in the package. No CDN, no Google Fonts, no analytics, no phoning home. The template renders identically with the network switched off — which is also how it survives an offline client review.
Every form validates properly, says what would have happened next, and discards what it was given. No payment is processed, no account is created, and the pages say so under the button — so a demo cannot mislead anyone, and you know exactly which seams to wire up.
Semantic markup, visible focus, labelled controls, and a layout that holds from a narrow phone to a wide desktop. The reduced-motion preference is respected everywhere. The earnings chart puts every value in its aria-label and behind a real table — no figure is reachable by pointer alone.
The Next.js edition replaces Bootstrap's JavaScript with eight primitives — Collapse, Modal, Offcanvas, Dropdown, Tabs, Carousel, Tooltip and a scroll-spy hook — written against Bootstrap's own class contract. They add no CSS, which is why the two editions animate the same.
One page puts every colour, size, radius, shadow and component in front of you, in both editions. It is the fastest way to see what you have, and it is built from the same tokens as everything else, so it stays true as the template changes.
One token layer
Colour, type, spacing, radius, shadow, z-index and motion are defined once, as JSON, and built into the three shapes the editions consume. Both editions read the same values — so a new palette is one file and one build, not a search-and-replace through sixty-four pages.
The roles are named for their job, not their colour: brand carries chrome and links, accent is spent on Reserve and price emphasis and nowhere else. An unknown key fails the build with the list of valid ones, which is what keeps stray hex values from creeping back in.
<link rel="stylesheet" href="norvik-tokens.css">import { applyPalette } from '@norvik/theme';@use "@norvik/theme/scss" as nk;The download
You are not choosing an edition at checkout. The licence covers the template, and the template is both builds of it — start in HTML, move to Next.js a year later, and you are still inside what you bought.
apps/html/The HTML edition32 .html files, plus assets/css, assets/js and assets/img. Upload the contents of this folder to a web root, or open index.html where it sits.
apps/nextjs/The Next.js editionThe App Router application: routes, server components, the fifteen client islands and the eight UI primitives, with the same images under public/img.
packages/theme/The token layerThe palettes and the scale as JSON, and the build that turns them into CSS custom properties, a SCSS entry and a typed JS module. Both editions read it.
documentation/The manualStructure, tokens, palettes, the scripts, and what to check before you ship. Written for the person who has to change this in six months.
licensing/Licences and creditsBootstrap and font licences, plus image credits. The images in the package are generated placeholders, not stock photography — the file says which is which.
Pricing
Yours to keep — includes one year of updates and re-downloads. Both editions are included at every tier. The price shown is what you pay — Indian orders include GST, everywhere else is tax-free.
Before you buy
Still unsure? Ask us — the people who answer wrote the template.
Both. One licence covers the template, and the download contains the HTML/Bootstrap edition and the Next.js edition together. Start prototyping in HTML and rebuild in React later without buying anything again.
Only for the Next.js edition, which is a normal Next application — npm install, npm run dev. The HTML edition has nothing to install and nothing to compile: upload the folder to a web root, or double-click index.html and it runs off the disk.
Page for page, all 32 of them, and they load the same stylesheet over the same token layer in the same order, so they render identically. What differs is how they are built — the chrome is copied into every HTML page and lives in the root layout in Next; the content is in the markup in one and in typed data files in the other.
No — Norvik is the front end. Search, booking, payment and accounts are drawn and validated but not wired to anything, and the pages are explicit about it so nobody is misled during a demo. Connecting them to your own back end is the work you are buying a head start on.
Eight palettes ship ready to switch between, and swapping one is a single attribute on the html element — at runtime, in both editions. A ninth palette, or a change to the spacing or type scale, is one edit to the token JSON and one build, and it lands in both editions at once.
The download ships generated placeholders at the exact sizes the layouts expect, so nothing third-party is redistributed. The photographs in the live demo are from Unsplash and are credited in the package — drop your own images in at the same filenames and nothing else changes.
Nothing you have stops working. The files you downloaded are yours to keep and keep using, on the number of sites your licence covers. What ends is access to new versions and re-downloads from the portal — renew to get those back.
Yes. Each site you deploy it on counts as one of the sites on your licence — and an HTML build and a Next build of the same site is one site, not two. A studio building for several clients wants the 5- or 25-site plan.
The live preview is the real template — every page, every state, running from the same files you download. The Next.js edition renders the same site from the same tokens.