How Forge Is Put Together

Published: 1/25/2026

How Forge Is Put Together

Building Forge

When I built Forge, my goal wasn’t to chase trends or assemble a flashy tech stack. I wanted a setup that is reliable, easy to reason about, and practical in day-to-day work. Every tool I chose had to support me from early experimentation all the way to a stable production system, without creating unnecessary complexity or technical debt.

Core Framework

At the core of the application, I use Next.js. It gives me the flexibility to decide how each part of the app should be rendered, whether that’s server-side for SEO, statically for performance, or dynamically where it makes sense. Having routing, data fetching, and UI in one cohesive framework keeps the codebase understandable and easier to maintain as the project grows.

Database Access

For database access, I rely on Drizzle ORM. I prefer it because it stays close to SQL and doesn’t hide what’s happening under the hood. That transparency makes queries easier to understand and debug, while strong typing helps me catch mistakes early. Changes to the data model remain explicit and predictable.

Database Infrastructure

The database itself runs on Neon, a serverless PostgreSQL platform that fits well with how I deploy and scale the application. It allows me to grow without managing infrastructure, while still working with a database I know well. Features like branching make it easy to test changes safely without affecting production.

Deployment

Deployment is handled through Vercel. It allows me to go from code to production with very little friction. Preview deployments make it easy to test changes in isolation, and the global infrastructure helps keep the application fast without additional setup.

Caching and Performance

For caching and lightweight background tasks, I use Redis via Upstash. This gives me the performance benefits of Redis without having to operate or maintain another service myself, which is especially important when working solo.

Authentication

Authentication is handled using Better Auth. Instead of building and maintaining security-critical logic on my own, I rely on a solution that integrates cleanly with the rest of the stack and covers common edge cases out of the box.

Why This Stack Works for Me

Overall, this stack works well for me because it feels cohesive and predictable. It lets me move quickly, understand my own system at all times, and iterate without fighting the tools. Nothing here is about being cutting-edge for its own sake — it’s about having a solid foundation I can build on with confidence.

Newest posts

No other posts found.