no-code.supply

Product

50% offEnds 10 October

Cistern

A dark, silent product site for a home battery, with a 24-hour instrument you can drag and a calculator that sizes it to your roof

Cistern is a launch site for a residential energy-storage product, with a drawn graphite slab and its seam of light, a draggable 24-hour instrument that reads roof, house, battery and grid, a self-sufficiency calculator that suggests a model, three model cards, a FAQ and a free-survey request form.

50% offHalf price on everything.Ends 10 October

Code NINE50 is applied at checkout.

Choose your edition
Buy — $39.50, Cistern Bundle — HTML + React

Tax included · Checkout by Polar

Digital product · All sales final · Refund policy

  • Cistern template — desktop screenshot 1
  • Cistern template — desktop screenshot 2
  • Cistern template — desktop screenshot 3
  • Cistern template — desktop screenshot 4
  • Cistern template — mobile screenshot 1
  • Cistern template — mobile screenshot 2

Signature effect

A single seam of warm light igniting in a dark slab, and a 24-hour instrument where dragging the line moves the roof, house, reserve and grid readings and a live chart

Installation

Up and running
in minutes.

No accounts, plugins or build tools. The HTML edition runs straight from the folder you download, and the React edition is a standard Next.js project.

  1. 01

    Unzip

    Download the zip after checkout and unzip it anywhere.

  2. 02

    Open index.html

    Double-click it and the site opens in your browser. Change the text in any text editor, save and refresh.

  3. 03

    Drag it online

    Drop the folder onto Netlify or Vercel, or upload it to any static host. It takes about a minute.

Edition

cistern-html-1.0.0

  • index.htmlDouble-click to open
  • assets/CSS, scripts, fonts, images
  • README.mdEditing and deploying
  • DESIGN.mdColours, type, spacing
  • AGENTS.mdFor your AI assistant
  • LICENSE.md

Pages

  • Home
  • 404
  • Privacy

Fonts

  • Jost
  • Inter Tight

Who it suits

  • Home batteries and solar storage
  • Energy, heat-pump and EV-charging companies
  • Premium hardware with a few models and a price
  • Products that benefit from an interactive sizing tool
  • Dark, quiet, design-led brands

Palette

  • #07090B
  • #0C1013
  • #12171B
  • #ECE8E0
  • #B4B8BA
  • #D8B879
  • #F1DDAE

Changelog

  1. v1.0.02026-10-07
    • HTML edition: a dependency-free product site that opens straight from disk, with a drawn graphite slab whose seam of light ignites, a draggable 24-hour instrument (roof, house, battery and grid readings with a live chart and a Play button), a self-sufficiency calculator that suggests a model, three model cards, a FAQ and a free-survey form, with a settings block for every effect.
    • React edition: the same page as a Next.js 16 static export (React 19, TypeScript, Tailwind CSS 4, Motion), with all copy, the three models and their prices, the figures, the calculator's assumptions and the legal text in content/site.ts, the HTML edition's stylesheet split into one global file per section in app/styles/, and each effect's settings as typed props (HeroStage, InstrumentPanel).
    • Pages: home, 404, privacy.
    • One codebase, not one file. The concept was a single HTML file. The page is now index.html plus tokens.css, main.css, fonts.css, kit.css, kit.js, main.js and one file per effect in assets/js/effects/ (hero-slab, day-instrument, sizer), each with a CONFIG block at the top.
    • Self-hosted fonts. Jost (variable weight 200–400) and Inter Tight ship in assets/fonts/ under the SIL Open Font License, with licences. The concept loaded them from Google Fonts; no request now goes there.
    • Brand tints follow the tokens. Glows, washes and the header glass are color-mix() of --gold, --gold-2 and --ink instead of raw rgba(). Only the battery drawing, black shadows and the film grain keep their own colours. The instrument's chart reads its colours from the tokens.
    Show all notes
    • Reveals use the kit. The concept's own .rv observer is replaced by the shared data-reveal behaviour with the same 1.5 s, 26 px rise and 140 ms stagger, plus a failsafe that shows everything if the script never starts. Hairlines still draw with the concept's .in class.
    • The survey form is a kit form. It validates through the browser, shows a "Sending…" state for 0.7 s in demo mode, and takes a real endpoint through data-endpoint. Its messages are data-invalid, data-success and data-error on the form. The message sits inside the form so it is announced with it.
    • The readings are a valid definition list. The sub-lines under each reading in the instrument are <dd> elements (the concept used <span> inside the <dl>, which axe flags).
    • Privacy link and pages. Added 404.html, privacy.html (a clearly marked placeholder), a Privacy link in the footer, a skip link with a visible focus state, a full SEO head (Open Graph, Twitter card, a canonical placeholder, JSON-LD Product with its three offers), a favicon, a touch icon, a web manifest and robots.txt.
    • Complete without JavaScript. The page shows its finished state without script: the slab, the figures, the day at 13:00 and the calculator's default result. The slider, the play button and the chart need script and are hidden without it.
    • Reduced motion. No entrance animations, motes, pointer light or parallax; numbers show their final values.
    • The figures are illustrative. The instrument's curves, the calculator's assumptions (900 kWh per kWp, €0.19 per kWh) and every spec, price and claim are made up for the demo. Replace them before you show them as real.
    • Typed values. Model names and prices appear in the cards, in CONFIG.models in sizer.js and in the JSON-LD, and the starting readings are typed in the HTML as well as computed: change them together. The README lists where.
    • The demo company (Cistern Energy Oy, Tampere), the address hello@cistern.example and cistern.example are made up. The form posts nothing until you add an endpoint.
    • In the React edition the model cards, the calculator's suggestion and the JSON-LD offers are all built from site.models.items, and the calculator and the cards share one state (SizerProvider), so they can't disagree. The JSON-LD is built from the content; in the HTML edition it is written by hand.
    • In the React edition the reveals are <Rv> and <Draw> components (the same fade, rise and stagger as the HTML edition's data-reveal), the instrument's chart is drawn as JSX from the same model as the readings, and the privacy page's text is in content/site.ts.
    • Review fixes before release. React: the Measure section, the hero strip and the model grid now draw their top hairline like the HTML edition; the header returns focus to the menu button on Escape; SizerProvider takes enabled (the HTML CONFIG.enabled; both editions now disable the two sliders when it is false). HTML: the no-JavaScript readings (90%, 1.1 kW, "taking 3.5 kW", 84%, €860, 7 years) now match what the scripts compute; og:image/twitter:image are absolute placeholder URLs; #models has a scroll-margin-top so its heading clears the fixed header from the nav. The calculator announces one settled summary to screen readers (a hidden role="status") instead of every slider step, and both editions format numbers with en-US.

Questions

HTML if you want a site that runs straight from the folder, with no build step. React if you already build in Next.js. The bundle gets you both, for less than buying them apart.

The license page spells out what a purchase covers, including client projects.

Read the license

No. It's a digital product, delivered as soon as you've paid, so all sales are final. If something doesn't work as described, email contact@no-code.supply.

Read the refund policy

No. A new version of a template you've bought is a free download from your Polar account — see the changelog below for what changed.

Mostly, yes. In the HTML edition you change the words and images in any text editor, save and refresh. The README and DESIGN files show where the colours and fonts live.

Drag the folder onto Netlify or Vercel, or upload it to any static host — no build step for the HTML edition, or a couple of commands for the React one.

  • Ashlar template — cover

    Ashlar

    Real estate

    Ashlar is a website for a boutique real-estate office that sells a few exceptional houses by introduction. It has five material slabs that open into exterior photographs, a register with photo galleries, facts and drawn site plans, a draggable terrace view with bearing marks and a dial, a three-step method with a timeline, advisor cards with live local times, and an introduction form that writes a letter as you type.

    Libre Caslon Display / FigtreeFrom $29
  • Aurel template — cover

    Aurel

    Brand

    A quiet, clay-and-bronze skincare template for a Copenhagen barrier-repair brand: a raymarched WebGL serum drop that bulges toward the cursor in the hero, a three-step ritual with CSS-rendered bottles, an ingredient list with generated molecule diagrams, a draggable before/after hydration map, clinical-result stat cards and a working shop with size pickers and a bag.

    Bodoni Moda / JostFrom $29
  • Ferro Type template — cover

    A loud, orange-and-black type foundry site built around one variable font: a hero word that bends its weight and width under your cursor, a live type tester that writes its own CSS, an axis-by-axis tour, a keyboard-driven glyph inspector and a licence configurator with a working cart.

    Roboto Flex / Roboto MonoFrom $29