Web
Everything a visitor or an operator actually touches, assembled on the server before it is sent.
Three layers a request passes through, and two that cut across all of them. What follows is the system the studio builds on, not a list of logos.
No framework is chosen for its own sake. Each one earns its place by making the result faster, more accessible or easier for the next person to maintain.
Everything a visitor or an operator actually touches, assembled on the server before it is sent.
Where a request stops being a page and becomes a decision: validate it, authorise it, carry it out.
Where state lives, and the one place a fact is allowed to be true.
The work that is language-shaped — drafting, triage, summarising, answering — given to a system with a defined input and a defined output.
Everything the other four need in order to run, stay reachable, and be observed while they do it.
Three layers in sequence and two across them. Reading the six steps below is the whole of the architecture — the drawing beside them adds nothing you would miss.
Served over HTTPS. Pages that can be built ahead of time already exist as files; the rest are rendered when they are asked for.
React components run on the server and assemble the finished page. What reaches the browser is content, not a loading state waiting on a script.
For anything the page cannot resolve on its own — a write, a login, a call to an outside platform — Node and Express validate the request, check the permission and carry it out.
One typed query against the store chosen for that project. The shape it returns is the shape every layer above it already expects.
Where the task is language-shaped, the backend calls an agent with a defined input and output. Nothing it produces for an outside audience is sent before a person has seen it.
Deployment, access control, monitoring and the performance budget apply to all of the above at once, rather than to any one of them in particular.
Three of them a request passes through in order. Two of them are not a step at all — one is called, the other holds the rest up.
Everything a visitor or an operator actually touches, assembled on the server before it is sent.
Renders the page and, where it needs something it cannot resolve itself, hands a typed request down to the application layer.
Where a request stops being a page and becomes a decision: validate it, authorise it, carry it out.
Takes the request from the web layer, checks who is asking and whether they may, then queries the data layer or calls the AI layer — and returns one typed shape either way.
Where state lives, and the one place a fact is allowed to be true.
Answers the application layer and nothing above it. The record shape is defined once, in types, and shared upward — so a value written in one layer cannot be read as something else in another.
The work that is language-shaped — drafting, triage, summarising, answering — given to a system with a defined input and a defined output.
Not a step in the request path. The application layer calls it deliberately, for a named task, and anything bound for an audience outside the organisation waits for a person first.
Everything the other four need in order to run, stay reachable, and be observed while they do it.
Wraps the whole path rather than sitting inside it. A change to any layer is deployed, measured and — if it has to be — rolled back by this one.
Anyone can list frameworks. What decides whether they hold is what has to be true before a change is allowed out.
Lint, typecheck, a contrast audit of every semantic colour pair and a production build run on every change. A release is blocked by a machine rather than by a reviewer's attention.
Changes go to a preview URL and are read there. The live domain only ever receives something that has already been looked at, and can be rolled back to what it was.
One set of types from the data store to the interface. A change that breaks something fails at build time instead of in front of a user.
Accounts are created in the organisation's name, secrets stay out of the repository, and handover is the default state rather than something arranged at the end.
nextneta.online is built on the web layer above — server-rendered Next.js and React in TypeScript, deployed on Vercel — and passes the same four checks before every deploy. It is the one piece of this page you can verify yourself.
Every name on this page is something we build with. None of it is a certification, a partnership, an accreditation or a vendor relationship, and we have not claimed one.
There are no uptime percentages, response times or throughput figures here, because we have not published a measurement you could check. When a project has one, it belongs to that project and to the people who can evidence it.
The stack is a range, not a mandate. Three databases on this page means the choice is made per engagement — relational where the shape is known and integrity matters, document where it varies — and whichever is chosen is written into that project's scope with the reason.
The stack exists to build six things. Tell us which one you need and we will tell you what we would build, what it would take, and what we would leave out.