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
- Live
- freeframe.dev

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 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 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
| Concern | Choice |
|---|---|
| Site | Next.js App Router, React, TypeScript |
| Styling | Tailwind CSS, shadcn/ui |
| Data | Postgres on Neon with Drizzle ORM |
| Accounts | Better Auth |
| Templates | HTML, Next.js, Astro, Nuxt, and WordPress block themes |