prizma

What your site is actually built on.

Versions, not adjectives. Every line below is checkable against the project file of this very site, and this page runs on exactly what it describes.

The site itself

Next 16.3
The React framework. Set to output: export, so the whole site compiles down to plain files. There is no process serving your pages and nothing to fall over at three in the morning.
React 19.2
The interface layer. The calculator, 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 is effectively 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 all of the 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.

Every width

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

Static, so it stays up

Plain files behind nginx. Small sites usually go down because of a database or a plugin, and there is neither.

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 updates and no security patches. It also means no admin login when you want one.

Same stack, your site

600 €, 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.

One line is enough. The reply lands the same day, usually within the hour.

  • The first screen comes before any payment
  • Replies land the same day
  • Your domain, code and content stay yours
Telegram, WhatsApp, Viber or email

No newsletter, no calls unless you ask for one.