Technical decisions that support your product.
Early decisions affect maintenance, security, and evolution. These are the technologies we operate in production — and the reasoning behind each choice.
Frontend & Web
Interfaces that load quickly on any device and remain clear for the people who will evolve them later.
Next.js
Full-stack React framework with native App Router, Server Components, and streaming.
Why we use it
Keeps pages, server components, and application routes together when that makes maintenance simpler.
React
Declarative component-based UI library with Virtual DOM and concurrent rendering.
Why we use it
Reusable components keep behavior and visual quality consistent across screens.
TypeScript
Strongly typed JavaScript superset with static analysis and advanced inference.
Why we use it
Static checks catch incompatible contracts before deployment and document the code.
Tailwind CSS
Utility-first CSS framework with native design tokens through CSS variables.
Why we use it
Utilities and CSS variables apply the design system without duplicating style sheets.
Mobile
Native iOS and Android apps from one codebase, without duplicating teams and maintenance.
React Native
Framework for native iOS and Android apps using React components and native APIs.
Why we use it
Shares part of the product model and React experience between web and mobile.
Expo
Managed React Native platform with a unified SDK, EAS Build, and over-the-air updates.
Why we use it
Organizes React Native builds and distribution through a documented workflow.
NativeWind
Tailwind CSS conventions for React Native through optimized StyleSheet output.
Why we use it
Keeps the styling language close to the one used in web projects.
Backend & APIs
End-to-end typed APIs whose client-server contract is checked before production.
Hono
Compact web framework compatible with multiple JavaScript runtimes.
Why we use it
Fits small APIs where runtime portability matters more than a full framework.
Node.js
Asynchronous JavaScript runtime for background services and integrations.
Why we use it
A strong fit for integrations, scripts, and services that need the JavaScript ecosystem.
Databases
Relational integrity, typed access, and versioned migrations instead of manual production changes.
Supabase
Managed PostgreSQL with integrated Auth, Storage, Realtime, and Edge Functions.
Why we use it
Combines managed PostgreSQL with authentication, storage, and events when the scope needs them.
Drizzle ORM
TypeScript ORM with a SQL-like API and migration support.
Why we use it
Keeps schemas and queries close to TypeScript without hiding how SQL works.
CMS
Client-editable content with a structure that stays versioned alongside the code.
Sanity
Headless CMS with Content Lake, Portable Text, and a customizable React Studio.
Why we use it
Fits projects that genuinely need a structured content editing panel.
Payments
Online payments with PCI security delegated to the provider, so card data never crosses the app.
Stripe
Payments platform with Checkout, Billing, Connect, and Radar fraud prevention.
Why we use it
Provides proven flows for payments, subscriptions, and platforms when needed.
DevOps & Deployment
Automated releases with checks before delivery and reproducible environments.
Vercel
Deployment platform with a global CDN, preview environments, and integrated analytics.
Why we use it
Makes per-change previews and compatible application releases straightforward.
TurboRepo
Build orchestrator with incremental caching and parallel task execution.
Why we use it
Reuses unchanged work and avoids repeating a full build unnecessarily.
Docker
Workload containerization with optimized images and local environment composition.
Why we use it
Reproduces local services with declared versions and configuration.
GitHub Actions
Repository-native CI/CD with build matrices, dependency caching, and automated deployment.
Why we use it
Runs the automated checks defined alongside the project source.
Design & UI System
Accessible components and shared rules that preserve visual consistency as the product grows.
shadcn/ui
Accessible React components built with Radix UI and Tailwind CSS.
Why we use it
Components remain in the project and can be adapted without a closed visual layer.
Figma
Collaborative design tool with components, variables, and advanced prototyping.
Why we use it
Variables, components, and inspection record interface decisions before implementation.