Published Jan 21, 2026

Last Updated Jan 28, 2026

Table of Contents

Share

7 min read

Best-In-Class frameworks for every Use Case

When it comes to frameworks, we focus on one thing: choosing the right tool for each job. Our stack is intentionally composed to balance speed, flexibility, and long-term maintainability—without chasing trends or adding unnecessary complexity.

We optimize for leverage, not novelty

OpenAI and Gemini

AI that’s flexible by design

In a fast-moving AI landscape, flexibility matters more than commitment to a single model. We’ve designed our AI layer so models can be swapped based on the task at hand.


Today, we use Gemini for document understanding and GPT-4o for conversational experiences. Foundational models are improving so rapidly that we haven’t needed to fine-tune anything yet—and we see that as a strength, not a limitation.

Frontend that scales with us

For mobile apps, Expo provides a smooth, productive React Native experience. On the web, Next.js gives us performance, reliability, and excellent routing out of the box.

We lean into the strengths of both frameworks and embed our shared Tamagui screens, keeping the frontend consistent and easy to evolve.

React Native

A monolith—on purpose

At the heart of our backend is a monolithic API built with NestJS. While the microservices debate is never-ending, a monolith allows us to move faster today—without the operational overhead of service discovery, provisioning, authentication, and networking.

This choice keeps complexity low and velocity high as we grow.

Zero-friction onboarding

Setting up a local environment shouldn’t take days—or even hours. We standardize development using VS Code Dev Containers, giving every engineer a repeatable, zero-setup environment with everything they need from day one.

The result: new hires can clone the repo, open it, and start contributing almost immediately—no custom setup guides or “works on my machine” issues.

Power where complexity demands It

For especially complex areas of the codebase, we reach for Effect. Effect adds powerful primitives for error handling, concurrency, and orchestration—filling in gaps where vanilla TypeScript falls short.

We use it selectively, where its strengths really shine, and continue to deepen our understanding as the codebase evolves.

Abstractions are most valuable when complexity is unavoidable.

Feature control, insight, and observability

We use LaunchDarkly to safely control feature rollouts, while RudderStack and Amplitude help us understand user behavior across the product.

For observability, we rely on Sentry and Datadog, with tracing powered by OpenTelemetry.

Granted Techstack

A modern data layer

Our primary data store is Gel, built on a PostgreSQL core and running atop autoscaling Amazon Aurora PostgreSQL. Gel gives us powerful features out of the box: rich relational schemas, migrations, access policies, typed clients, and a built-in GraphQL endpoint.

It combines the reliability of Postgres with the ergonomics of a modern data platform.

One unified API surface

Everything comes together through GraphQL, powered by Apollo. We stitch together multiple data sources—including Gel—behind a single, strongly typed API.

One of our favorite parts of this setup: define a new Gel schema, and immediately query it from the frontend with full type safety—no glue code required.

Infrastructure: performance and scalability by design

Our infrastructure is designed to scale efficiently while minimizing complexity. We’ve built our cloud infrastructure on AWS, leveraging

ECS Fargate for simple horizontal scaling of services. Going full Kubernetes felt like too much of a distraction for our current scale, although as with any decision, that calculation could well change as we continue to grow. We deploy Next.js behind CloudFront and Lambda.

Our whole cloud is managed using an Infrastructure-as-Code approach with Pulumi. We love Pulumi thanks to its capability for configuration in any programming language—so of course, that is defined with TypeScript too. This is really powerful for programmatically generating common infrastructure patterns.

Granted Infastructure

In conclusion

By empowering developers and fostering a collaborative environment, we’re not just building a really impactful product with the potential to help millions of people—we’re also building a world-class engineering organization.


Ready to do the best work of your life? 👉 Consider it Granted.

The Latest