prizma

What your site is actually built on.

Versions, not adjectives. These are the exact versions from the project file of this site, and this page runs on exactly what it describes.

The site itself

Next 16.3
The React framework. Set to output: export, so every page is built ahead of time into plain files. Nothing is rendered on request — far fewer moving parts that can fail.
React 19.2
The interface layer. The advisor, the steppers and the forms are real components with their own state, not scripts glued onto a page.
TypeScript 5.9, strict
Every value is typed. Most of what would become a bug on a live site becomes a build error instead.
Utopia fluid scale
Type and spacing are computed from four numbers by formula, not picked by eye. That is why the rhythm holds at 390 px and at 2560 px without a pile of breakpoints.
A twelve-column grid
One grid for the whole site: every block declares how many columns it takes instead of laying itself out its own way.

Things the browser now does itself

Each of these replaced a library that used to be shipped to your visitors. The page is faster because there is less of it, not because something was optimised afterwards.

View Transitions
Pages cross-fade into each other instead of blinking white. This used to require turning the whole site into a single-page app; now the browser does it across separate files.
Scroll-driven animation
Sections rise into place on the compositor thread. No scroll listener, so the motion does not stutter while the main thread is busy.
The Popover API
Panels open above everything, close on Escape and on a click outside, and return focus where it was. This used to be three handlers and a bug about focus.
Speculation Rules
The next page is prepared before the click lands, so navigation feels instant.
content-visibility
A long page skips laying out what is off screen, which is most of the work of the first paint.
prefers-reduced-motion
One media query switches the motion above off for people whose system asks for it. Not an afterthought: it sits in the same files.

The part that receives your enquiries

Bun 1.3
The enquiry service runs on Bun rather than Node. One event loop, no framework, and no dependency tree to audit.
SQLite in WAL mode
Enquiries land in a file-backed database through prepared statements. Reads never wait on writes.
Telegram delivery
The message reaches you where you already are. If Telegram is down the enquiry is already saved, so nothing is lost.
Rate limit and honeypot
Five submissions a minute per address, plus a field invisible to people that only robots fill in.
nginx with TLS
Certificates from Let us Encrypt renew themselves. The service itself listens on the loopback interface only and cannot be reached from outside.

What gets checked before handover

Contrast, computed

Every colour pair goes through the WCAG formula before it ships. Body text never sits below 4.5:1.

Keyboard and screen readers

Real headings, real labels on fields, a visible focus ring. Everything is reachable from the keyboard.

The full width range

Reference checks at 390, 768, 1440 and 2560 px. No horizontal scrolling anywhere, verified by script rather than by eye.

Static, so it stays up

Prebuilt files served as they are. Page delivery does not depend on a database or plugins — the usual reasons small sites go down.

And what it is not

This is more than your site needs
A five-section site requires none of this. It is here because it costs nothing extra once it is known, and because you asked what it runs on.
No page builder
You cannot drag blocks around after handover. Text and photographs you change yourself; structural changes come back to me.
No content management system
No WordPress means no plugin zoo and no update cycle to fall behind on. It also means no admin login when you want one.

Same stack, your site

690 €, three days, first screen free and first. If you want to go through any of this in detail before deciding, ask.

Send me a line

Aleksey Botalov · BelgradeWhere the numbers come from

Your business, online. Properly.

Two lines and you are inside your own account, where the whole thing happens — the first screen, the price, the papers, the dialog.

  • The first screen comes before any payment
  • I answer myself, usually within the day
  • Your domain, code and content become yours once paid in full

No newsletter, and no calls unless you ask for one.