Skip to content
Technology

A stack chosen for the next five years

Proven, well-supported tools, so hiring, scaling and maintenance stay boring in the best way. Here is what we use and why.

Front end: React and TypeScript

React lets us build interfaces from reusable components and has one of the largest developer communities, so the software never depends on a niche skill. TypeScript checks the shape of data at build time, from the API response to the button that displays it — a whole class of bugs never reaches users. We pair them with Vite for fast builds and Tailwind CSS for consistent, maintainable styling.

Back end: Node.js and Express

Using JavaScript and TypeScript on both sides means one team can work across the whole product, and types and validation rules can be shared. Express keeps the API layer small and explicit: every route declares the permission it needs.

Real-time: Socket.IO and WebRTC

When screens must update the moment something changes, we use Socket.IO for a persistent connection rather than polling. For live video, such as CR Cafe’s remote screen view, we use WebRTC so the stream goes peer to peer and the server only relays signalling. We wrote up the approach in building real-time station control.

Data: PostgreSQL

PostgreSQL gives us relational data with real constraints, transactions and mature tooling. Schema changes are versioned migrations applied on release, and we check for drift between the code’s models and the live database, so every environment matches.

Desktop: Electron

When software has to run on a Windows PC — like CR Cafe’s lock-screen agent and Wake-on-LAN relay — we use Electron with an auto-update channel. It lets the same team ship desktop software alongside the web platform. See building a lock-screen agent with Electron for what that involves in practice.

Mobile and devices: React Native and ESP32

For mobile apps we use React Native with Expo, reusing the team’s React and TypeScript skills. For connected hardware, such as CR Cafe’s wall-mounted session displays, we write firmware for ESP32 microcontrollers that talk to the same backend.

Deployment and infrastructure

  • GitHub Actions pipelines that build and deploy on every push to the main branch
  • Linux servers with nginx and HTTPS, and a process manager for zero-downtime reloads
  • Desktop release feeds for self-updating installers
  • Release announcements to the team, generated from the changelog

Security built into the stack

HttpOnly session cookies, bcrypt password hashing, rate limiting, security headers and server-side permission checks are part of the default setup, not add-ons. The details are on our security page.

Scalability

We scale the boring way first: good indexes, stateless API processes, a single source of truth in the database, and features that are data rather than code. That covers most businesses for a long time, without the cost of infrastructure they don’t need yet.

Have something that needs building?

Tell us what your business is trying to do. We'll come back with a straight answer on scope, timeline and whether we're the right team for it.

contact@crdevs.com