Technology
Technology, layer by layer.
Breadth across every interface, depth down to the infrastructure. Every technology on this page is chosen for the job it does in the system.
Stack
The stack, by function.
Technologies are chosen for the job they do in the system. This is the stack we build on, from the interface down to the machine.
- ReactComponent-driven interfaces
- Next.jsWeb applications, server-rendered
- React NativeiOS and Android from one codebase
- TypeScriptTypes from database to screen
Talks to the layer below over HTTPS / JSON
- Node.jsServices, workers, integrations
- APIsVersioned, documented, authenticated
- DatabasesPostgreSQL, migrations, indexes
- AuthenticationSessions, roles, permissions
Talks to the layer below over SQL / events
- AIAssistants, extraction, semantic search
- AutomationWorkflows across your tools
- Data systemsPipelines, reporting, analytics
Talks to the layer below over Containers
- DockerReproducible builds and deploys
- LinuxServers administered and hardened
- CloudFrom a single VPS to managed cloud
- CI/CDBuild, test and release, automated
- MonitoringHealth checks, alerts, logs
Principles
How we choose.

Chosen for the job
A technology earns its place by the work it does in the system — never because it is popular.
Fewer moving parts
No queue, cache or extra service until the product needs it. Everything we add is something to monitor, secure and back up.
Types end to end
TypeScript from the database schema to the interface: a renamed field breaks the build, not production.
Reasons written down
Every significant choice is documented with its reason and the alternatives set aside, so the next team can carry on.
Security
A security baseline, not an afterthought.
The baseline we hold NovaDesk, our own platform, to — and the one we start from on yours.
- Passwords hashed with Argon2id
- Sessions stored in the database, revocable at once
- Permissions checked on the server, in every action
- Brute-force protection by address and by account
- No account enumeration on login or reset
- Credentials encrypted at rest
- Secrets never sent to the browser
- Audit log of sensitive actions
Operations
Built to be run.
The infrastructure side of every product: how it is shipped, watched and recovered.

Containerised
Reproducible Docker builds, the same from one environment to the next.
Automated releases
Build and release pipelines, so shipping is a routine rather than an event.
Health checks and alerts
Endpoints, logs and alerts that report a problem before users do.
Backups and restores
Encrypted backups and a written, testable full-restore procedure.
Runbooks
Deployment, incident and recovery procedures, written and kept current.
Migrations
Versioned database migrations, reviewed in SQL and applied on deploy.
Have something worth building?
Tell us what you’re building. We reply within two working days with an honest first view on feasibility, scope and order of magnitude.
