Websites.
In the right stack.
A single landing page, or an information website of up to 10 pages, written in React and TypeScript. Built in Vite, Next.js, Astro or TanStack Start, and deployed from a repository with your name on it.
Four stacks.
One price.
All four are React and TypeScript. What differs is how a page reaches the visitor, and what the site can grow into. The scope names the stack and the reason.
- Vite
- A landing page or a small site
- Astro
- Sites that are mostly pages to read
- Next.js
- Sites that change per visitor, or grow into an app
- TanStack Start
- Sites with typed routing and server logic
- Vite
- Built in the browser from static files
- Astro
- Finished HTML, almost no JavaScript
- Next.js
- Finished HTML, rendered per page or per visitor
- TanStack Start
- Finished HTML, rendered on the server
- Vite
- Reads the page once it runs
- Astro
- Reads finished HTML
- Next.js
- Reads finished HTML
- TanStack Start
- Reads finished HTML
- Vite
- A folder of static files
- Astro
- A folder of static files, or a light server
- Next.js
- Vercel, Cloudflare or a Node server
- TanStack Start
- Cloudflare, Vercel or a Node server
- Vite
- $199 single page, $999 up to 10 pages
- Astro
- $199 single page, $999 up to 10 pages
- Next.js
- $199 single page, $999 up to 10 pages
- TanStack Start
- $199 single page, $999 up to 10 pages
Every page. Every state.
Listed in the written scope before a line of code is written.
From $199. In writing.
A single page is $199. An information website of up to 10 pages is $999. The same prices apply in Vite, Next.js, Astro and TanStack Start. More pages or templates, copywriting, photography and a CMS are quoted in writing before work starts.
Four phases. Each signed off.
A typical plan. A single page moves through it in a week or so. The number of pages and the content to move set the rest.
Requirements
Pages, templates and content agreed in writing. Stack and hosting chosen.
Design
Every template in Figma, at phone and desktop widths, approved before the build.
Build
Components first, then pages, pushed to preview URLs you can open any day.
Launch
Forms tested, Lighthouse run, production and handover.
Every change gets a URL.
Before it reaches production.
Preview before production
Each change deploys to its own address. Production updates after it has been checked.
Rollback in one step
Every deploy is kept. A bad release is reversed without waiting for a fix.
Accounts in your name
GitHub, hosting and third-party services are opened by you and belong to you from the first day.
Code that outlives anyone
Your repository, in React and TypeScript, documented. Any React developer can pick it up.
Scope in writing
Pages, templates and integrations are listed before the build. A change is priced before it is made.
Bugs fixed
Anything in the delivered scope that does not work as agreed is fixed as part of the build.
Websites. Not apps behind a login.
If the second list sounds like you, another page here fits better.
A website build fits
- 01A landing page for a launch or a campaign
One page, live in about a week, with a form that reaches your inbox.
- 02An information website
Home, about, services, work and contact: up to 10 pages in one build.
- 03A founder's first website
A clear page that says what you sell, who it is for and how to reach you.
- 04An existing React, Next.js or Astro codebase
Extended or refactored, quoted in writing after a read of the repository.
Look at another page first
- 01There are accounts, a database or a dashboard
That is a web application. Web Apps, CMS & Expo starts at $2,099.
- 02It is a shop
A Shopify theme, or a headless storefront, carries the catalogue and the checkout.
Written down. Handed over.
Each one is checked before launch, and the evidence comes with the repository.
TypeScript throughout
No plain JavaScript files in the source. The build fails on a type error.
Lighthouse 90+ on a phone
Performance and accessibility measured on the main pages. The reports come with the handover.
Code split by route
Each page loads its own code. The first page does not wait for the rest.
Dimensions on every image
Width and height are set, so the page does not jump as pictures load.
Keys out of the repository
Secrets live in environment variables on the host. None are committed.
Keyboard and screen reader
Menus, dialogs and forms work without a mouse, with labels and visible focus.
One React build. Open it.
The case file shows the framework, the checkout and how the pages load.