Skip to content
All work

Case study · Design & development

Freeframe

A library of complete, multi-page website templates in HTML, Next.js, Astro, Nuxt, and WordPress, and the site that previews, sells, and delivers them.

Client
Paul Peery
Stack
Next.js, TypeScript, Tailwind CSS, Astro, Nuxt, WordPress, Postgres
The Freeframe home page: the headline “Complete websites, ready to make your own” beside three template previews.

The brief

Most free website templates are a single landing page. The complete ones cost money, or arrive buried in build tools. I wanted the opposite:

  • Complete, not a teaser. Every template has the pages a real site needs, from the home page and the contact form to the 404 page.
  • Readable over clever. Plain HTML and Tailwind CSS, or small typed components. If you can open a text editor, you can change it.
  • In the stack you already use. The same design as an HTML site, a Next.js, Astro, or Nuxt project, or a WordPress block theme.

What I built

The templates. More than 80 of them, each designed for one kind of site: a product, an agency, a shop, a clinic, a publication, a person. Each is 6–10 pages, in light and dark, with forms that validate what is typed into them. Of those, 50 also come as Next.js, Astro, and Nuxt projects and as WordPress block themes, and every version carries its own version number and changelog.

The template gallery, with filters for category, stack, and price above the first row of templates

The site. A visitor opens any template in a live preview, switches between desktop, tablet, and phone widths without leaving the page, and downloads the version for their stack. The HTML versions are free under the MIT license; the others are paid, with a commercial license. An account keeps favorites, a download history, and purchases, and lets people suggest the next template and vote on other people's ideas.

The page for one template: a stack picker, a download button, and a live preview with buttons for desktop, tablet, and phone

The back office. An admin dashboard runs the catalog: which templates are listed and at what price, downloads and download limits, purchases and refunds, users, the inbox, requests, and health checks.

How it stays correct

That many sites in five forms is too many to check by hand, so the checking is scripted:

  • Every HTML template is checked automatically for console errors and broken links.
  • Every Next.js, Astro, Nuxt, and WordPress version is installed, linted, type-checked, and built before it ships.
  • Every page is looked at on a phone, a tablet, and a desktop, in light and dark, and with the keyboard alone.

What it runs on

ConcernChoice
SiteNext.js App Router, React, TypeScript
StylingTailwind CSS, shadcn/ui
DataPostgres on Neon with Drizzle ORM
AccountsBetter Auth
TemplatesHTML, Next.js, Astro, Nuxt, and WordPress block themes