Technology

Technical decisions that keep data, integrations and releases under control.

The stack should serve the work the system will do after launch: backend logic, frontend and mobile interfaces, API contracts, linked data, background jobs, infrastructure, observability and safer future changes.

Stack

Tools chosen for the production job

We balance durable open-source ecosystems with modern delivery tools across backend, frontend, mobile, APIs, data, infrastructure and delivery: Rails, Go, Python, JavaScript, TypeScript, React, Solid.js, SolidStart, Astro, Elixir/OTP, PostgreSQL, Redis, Docker, Linux, cloud infrastructure, REST, GraphQL, tRPC, JSON, linked data and OpenAPI.

Standards

Code that can be operated

Tests, background job visibility, deployment, monitoring, documentation, workflow clarity and failure handling are part of the build from the start.

Architecture

Boundaries named early

Architecture should reduce risk and make change easier. We surface data ownership, API contracts, integration boundaries and migration constraints before they disappear into code.
  • Backend and APIs
  • Frontend and mobile
  • Data and linked data
  • Docker, Linux and cloud
  • AI/LLM workflows

Technical calm

Technology decisions should make production easier to live with.

A stack only makes sense if it can be understood, tested, maintained, monitored and changed. The work is not getting data through an API once; it is keeping the flow reliable when volume, failures and edge cases arrive.

Readable architecture

Boundaries, dependencies, data contracts and tradeoffs are named in plain language, not buried in implementation detail.

Production habits

Testing, queues, monitoring, deployment and failure handling are part of the build, not an afterthought.

Room to change

We prefer systems that can evolve through migrations and small releases instead of turning every new need into a rewrite.

We lean on mature ecosystems like Ruby on Rails when that maturity lowers risk, and on modern tools when they solve the problem clearly. The choice follows the production job, not fashion.

Capability map

A capability map organized by the layer that carries the risk.

Each layer names the pressure it tends to carry and the move that resolves it: workflow, UX, API contract, data model, queue, deploy path, infrastructure or AI pipeline.

From layer to delivery

Once the risky layer is visible, the work needs a safe production path.

Technology choices only matter when they become a delivery sequence: map the workflow, validate the risky slice, ship in useful increments, document the decisions and keep production observable after release.

Once the risky layer is visible, the work needs a safe production path.
PATH
See the delivery process
  1. Validated slice
  2. Small release
  3. Observable rollout