★ Internal tool · stack
Best Tech Stack for an internal tool MVP
My opinionated stack for an internal tool MVP, layer by layer, with why I'd pick each tool and what would change my mind. Adjust the answers to fit your team.
- Runs in your browser
- No signup
Your stack
Tech stack for Internal tool
8 layers, picked for your answers. Boring where it should be, so your effort goes into the product.
- Frontend
Next.js (React + TypeScript)
Server rendering for SEO, file-based routing and the biggest React ecosystem. TypeScript end to end catches whole classes of bugs before users do.
- What would change my mind
- A purely internal tool with no SEO needs, where a plain Vite + React single-page app is simpler.
- Alternative
- Vite + React SPA, or Remix / React Router
- Backend / API
Next.js route handlers + server actions
No separate service to deploy: the API lives next to the UI and shares types with it. Plenty for an MVP and well beyond.
- What would change my mind
- Several clients (mobile, partners) hitting the API, long-running work, or a separate backend team.
- Alternative
- A standalone Node.js + Fastify service
- Database
PostgreSQL on Neon
Relational, transactional and boring. JSON columns cover the semi-structured bits, and pgvector covers embeddings if you add AI.
- What would change my mind
- Truly schemaless, write-heavy event data at very high volume. Add a specialised store for that slice only.
- Alternative
- MySQL, or MongoDB for document-shaped data
- Auth
Auth.js (NextAuth)
Open source, runs in your Next.js app, and covers OAuth plus email login with no per-user fees.
- What would change my mind
- Teams, organisations and SSO requirements, where a hosted provider saves real time.
- Alternative
- Clerk
- Hosting
Vercel
Git push to deploy, preview URLs for every branch and no servers to manage, which is exactly what an MVP team needs.
- What would change my mind
- Long-running processes, heavy compute or strict data-residency requirements.
- Alternative
- Netlify, or Railway for a container
- Background jobs
Inngest or Trigger.dev
Durable background functions with retries, schedules and a dashboard, written in the same TypeScript codebase.
- What would change my mind
- Very high throughput or strict data residency, which points to a queue in your own cloud.
- Alternative
- BullMQ + Redis
- Analytics
PostHog
Product analytics, funnels, session replay and feature flags in one tool, with a generous free tier.
- What would change my mind
- A marketing-only site, where a simple privacy-friendly counter like Plausible is enough.
- Alternative
- Plausible (simple), or Mixpanel
- Email
Resend
Reliable transactional email with a clean API and good deliverability defaults.
- What would change my mind
- Marketing campaigns and newsletters, which belong in a separate tool.
- Alternative
- Postmark
This is the stack I'd pick.
Want me to build on it? I ship MVPs on exactly this kind of stack.
What makes an internal tool different
Internal tools sit on top of systems you already have. The architecture is about safe access to those systems, roles and an audit trail, not polish or scale.
Risks to plan for
Unsafe write access
One wrong click edits production data. Add roles, confirmations and an audit log.
Slower than the spreadsheet
If it isn't faster than the spreadsheet it replaces, people won't use it.
Source system limits
Rate limits and data quality in existing APIs set the pace of the build.
The stack at a glance
With the preset answers for an internal tool (you can change them above), this is the stack layer by layer.
| Layer | Pick | Alternative |
|---|---|---|
| Frontend | Next.js (React + TypeScript) | Vite + React SPA, or Remix / React Router |
| Backend / API | Next.js route handlers + server actions | A standalone Node.js + Fastify service |
| Database | PostgreSQL on Neon | MySQL, or MongoDB for document-shaped data |
| Auth | Auth.js (NextAuth) | Clerk |
| Hosting | Vercel | Netlify, or Railway for a container |
| Background jobs | Inngest or Trigger.dev | BullMQ + Redis |
| Analytics | PostHog | Plausible (simple), or Mixpanel |
| Resend | Postmark |
Want the price tag too? Run the same product through the Internal tool cost estimate.
Questions founders actually ask
Low-code builder or custom code?
Does an internal tool need a separate backend?
How do I secure an internal tool?
Why does the picker recommend boring technology?
Is this stack good enough to scale?
Stack by product type
- Stack for a B2B SaaS
- Stack for a marketplace
- Stack for an AI chatbot
- Stack for an AI agent
- Stack for a mobile app
- Stack for a fintech app
- Stack for an e-commerce store
- Stack for a booking app
- Stack for a CRM
- Stack for a learning platform
- Stack for a social / community app
Or start from a blank slate with the full tech stack picker.
More from the workbench
Fine print
Tools: on the house.
Engineer: by the hour.
The opinion was free. The implementation is where I come in.
I'm Himanshu, an AI and full-stack engineer. I build MVPs, AI agents and the growth plumbing around them for early-stage startups.
