Best Tech Stack for an Analytics Dashboard as a Solo Developer
The best tech stack for building an analytics dashboard as a solo developer - frameworks, databases, hosting, and tools.
Best Tech Stack for an Analytics Dashboard as a Solo Developer
Analytics dashboards are everywhere. Whether you're building a web analytics tool (like Plausible or Fathom), a business metrics dashboard, a social media analytics platform, or an embeddable analytics widget for other SaaS products, the technical challenges are the same: ingest large volumes of events, aggregate them efficiently, and display charts that load fast.
The stack matters more here than most app types because bad database choices at the start can make your product unusably slow as data grows.
Recommended Stack at a Glance
| Layer | Pick |
|---|---|
| Frontend | Next.js (React) |
| Charts | Recharts or Tremor |
| Backend | Next.js API routes |
| Analytics DB | ClickHouse (via Tinybird or ClickHouse Cloud) |
| App DB | PostgreSQL (via Prisma) |
| Event Ingestion | Cloudflare Workers |
| Hosting | Vercel |
| Payments | Stripe |
Frontend: Next.js + Charting Library
An analytics dashboard is a chart-heavy, data-dense application. Users expect interactive charts, date range selectors, comparison views, and instant filtering. Next.js with React gives you the component ecosystem and data fetching patterns to build this well. It is the most-starred React framework on GitHub at 139,595 stars, MIT licensed, and ships roughly 40.1 million npm downloads a week. The latest release is v16.2.6.
For charting, you have two strong options:
Recharts is the most popular React charting library. It's composable (charts are built from components like <LineChart>, <Bar>, <Tooltip>), handles responsive layouts, and supports all standard chart types. It uses SVG rendering, which means charts look crisp at any resolution. It is MIT licensed, sits at 27,183 GitHub stars, and pulls roughly 46.9 million npm downloads a week, the heaviest of any React charting package. The latest release is v3.8.1.
Tremor is a newer option built specifically for dashboards. It gives you pre-built dashboard components (KPI cards, area charts, bar lists, tables) that look professional out of the box. If you want to ship a polished dashboard fast without spending days on custom chart styling, Tremor saves significant time. It is Apache 2.0 licensed with 3,441 GitHub stars, and the @tremor/react package does about 313,500 npm downloads a week at v3.18.7. Note that the smaller download number reflects its newer, dashboard-specific niche rather than a quality gap.
For the dashboard layout itself, use a clean sidebar + main content pattern. Date range picker at the top, KPI summary cards below, then detailed charts. Keep it simple. Every analytics product that tried to be too clever with its UI ended up confusing users.
The Critical Decision: Your Analytics Database
This is where most solo developers make the wrong choice. Do not use PostgreSQL for analytics event data. It works fine with 10,000 events but falls apart at 10 million. Analytics queries are fundamentally different from application queries. You're doing aggregations (COUNT, SUM, AVG) over time ranges across millions of rows, not looking up single records by ID.
ClickHouse is the right database for analytics workloads. It's a columnar database designed specifically for aggregation queries over large datasets. A query that takes 30 seconds in PostgreSQL runs in 50 milliseconds in ClickHouse. The open-source engine is Apache 2.0 licensed and carries 47,697 GitHub stars, and it powers most of the managed analytics platforms in this space.
For a solo developer, you don't want to manage ClickHouse yourself. Use one of these managed options:
Tinybird is the best choice for most solo developers. It gives you a ClickHouse-powered data platform with an HTTP API for ingestion, SQL for querying, and published API endpoints. You define a SQL query, Tinybird exposes it as a REST API with caching and rate limiting. Its free plan includes 10GB of storage and 1,000 requests per day with no credit card required. When you outgrow that, the Developer plan is $49/month with 25GB included storage and unlimited daily requests. Check current pricing before you commit, since the compute-based rates can move.
ClickHouse Cloud is the direct managed option if you want full ClickHouse SQL access. It runs on pay-per-use pricing that separates compute and storage, and new accounts get a 30-day trial with credits. The Basic tier works out to roughly $66.52/month for a service active six hours a day in AWS us-east-1 (1 replica, 8 GiB RAM, 2 vCPU, 500GB storage), so it sits noticeably above Tinybird's entry point but gives you raw ClickHouse SQL.
Application Database: PostgreSQL
You still need PostgreSQL for your application data: user accounts, billing, dashboard configurations, saved reports, alert settings. This is standard relational data that Postgres handles perfectly.
Keep the two databases separate. PostgreSQL for app data (via Prisma), ClickHouse/Tinybird for analytics events. They solve different problems and mixing them creates performance issues as you scale.
Prisma is the most-used type-safe ORM in the Node ecosystem at 46,030 GitHub stars and around 11.6 million npm downloads a week, currently at v7.8.0. For managed Postgres, Neon's free plan gives you 0.5GB of storage per project and 100 compute-hours per project, then its Launch plan is pure pay-as-you-go with no monthly minimum at $0.106 per compute-hour and $0.35 per GB-month.
Event Ingestion: Cloudflare Workers
Your analytics system needs an ingestion endpoint that handles high-throughput writes. Events come in fast. A website with 10,000 daily visitors generates 50,000+ events per day (page views, clicks, sessions).
Cloudflare Workers are ideal for ingestion:
- Zero cold starts. Every event gets processed instantly
- Global edge. Low latency regardless of where the user's site visitor is
- Massive scale. The free plan allows 100,000 requests per day. The Workers Paid plan is $5/month and includes 10 million requests, then charges $0.30 per additional million
- Simple. A Worker that validates the event and forwards it to Tinybird/ClickHouse
The Worker receives an event (page view, custom event, etc.), validates and sanitizes it, enriches it with geolocation data (Cloudflare provides this automatically via cf headers), and sends it to your analytics database.
This separation of concerns is important. Your dashboard server doesn't need to handle ingestion traffic. The two have completely different scaling characteristics.
Hosting: Vercel
Vercel for your Next.js dashboard application. The dashboard itself is a relatively standard web app with server-rendered pages and API routes. Vercel handles deployment, CDN, and serverless functions. The Hobby plan is free forever and includes 1M edge requests, 100GB fast data transfer, and 1M function invocations per month, which covers a real launch. The Pro plan is $20 per user per month and bundles a $20 usage credit, 10M edge requests, and 1TB transfer, with overages metered after that.
Your architecture ends up with three deployment targets:
- Vercel - Dashboard app and API
- Cloudflare Workers - Event ingestion endpoint
- Tinybird/ClickHouse Cloud - Analytics data storage and query engine
This might seem like over-engineering, but each piece is simple and handles its concern well. A monolithic approach would create scaling problems when your ingestion traffic is 100x your dashboard traffic.
Nice-to-Haves
- Stripe for subscription billing (usage-based pricing works well for analytics tools). Standard US online card pricing is 2.9% + 30c per successful transaction
- Resend for email reports and alerts. The free plan covers 3,000 emails per month capped at 100 per day, and the Pro plan is $20/month for 50,000 emails with overage at $0.90 per thousand
- Upstash Redis for rate limiting on the ingestion endpoint. The free plan allows 500K commands per month and 256MB of storage, then pay-as-you-go is $0.20 per 100K commands or a $10/month fixed plan
- IP geolocation (Cloudflare provides this free in Workers via
cfheaders) - User-Agent parsing for browser/device analytics (ua-parser-js, 10,129 GitHub stars, about 25.6 million npm downloads a week, v2.0.10; note it is AGPL-3.0 licensed so check the terms for commercial use)
- React Query (TanStack Query) for efficient dashboard data fetching with caching. It is MIT licensed at 49,531 GitHub stars and roughly 52.1 million npm downloads a week, currently v5.100.14
Monthly Cost Breakdown
| Service | Cost |
|---|---|
| Vercel (Pro) | $20/user/month (Hobby is free) |
| Tinybird (free plan) | $0 (10GB, 1,000 req/day) |
| Cloudflare Workers (free plan) | $0 (100,000 req/day) |
| Neon Postgres (free plan) | $0 (0.5GB/project, 100 CU-hrs) |
| Stripe | 2.9% + 30c per transaction |
| Domain | ~$1/month (varies by registrar) |
| Total | ~$21/month + Stripe fees |
If you stay on Vercel's free Hobby plan to start, the recurring cost can be effectively $0 plus the domain until you cross a free-tier limit. When data volume grows, the next steps are Tinybird's Developer plan at $49/month or ClickHouse Cloud's Basic tier from roughly $66.52/month. Both are far below the old "starts at $400/month" assumption, so the upgrade path is gentler than it used to be. Always check the live pricing pages before budgeting, since promotional rates and included allowances move.
Quick Comparison: Managed Analytics Database Options
| Option | Entry pricing | Free tier | Best for |
|---|---|---|---|
| Tinybird | Developer $49/mo | 10GB, 1,000 req/day | Solo devs who want a query-to-API platform |
| ClickHouse Cloud | Basic from ~$66.52/mo | 30-day trial credits | Full raw ClickHouse SQL access |
| Self-host ClickHouse | Your server cost | Open source (Apache 2.0) | Maximum control, more ops burden |
Conclusion
The best stack for a solo developer building an analytics dashboard: Next.js with Recharts or Tremor for the frontend, ClickHouse (via Tinybird) for analytics data, PostgreSQL for application data, Cloudflare Workers for event ingestion, and Vercel for dashboard hosting.
The single most important decision is using a columnar database for analytics queries instead of PostgreSQL. This is the difference between a dashboard that loads in 200ms and one that takes 15 seconds. Get this right from day one and everything else falls into place. Get it wrong and you'll be rewriting your entire data layer six months in.
Sources
GitHub star counts and npm weekly download figures were pulled live from api.github.com and api.npmjs.org, and latest versions from registry.npmjs.org. Pricing was read from each vendor's official page. All figures checked on 2026-05-30.
- Next.js stars and version: github.com/vercel/next.js, npm: npmjs.com/package/next
- Recharts stars, downloads, version: github.com/recharts/recharts, npmjs.com/package/recharts
- Tremor stars and version: github.com/tremorlabs/tremor, npmjs.com/package/@tremor/react
- ClickHouse stars: github.com/ClickHouse/ClickHouse
- Prisma stars, downloads, version: github.com/prisma/prisma, npmjs.com/package/prisma
- TanStack Query stars, downloads, version: github.com/TanStack/query, npmjs.com/package/@tanstack/react-query
- ua-parser-js stars, downloads, version, license: github.com/faisalman/ua-parser-js, npmjs.com/package/ua-parser-js
- Vercel pricing: vercel.com/pricing
- Tinybird pricing: tinybird.co/pricing
- Cloudflare Workers pricing: developers.cloudflare.com/workers/platform/pricing
- ClickHouse Cloud billing and Basic tier: clickhouse.com/docs/cloud/manage/billing/overview
- Neon pricing: neon.com/pricing
- Stripe pricing: stripe.com/pricing
- Resend pricing: resend.com/pricing
- Upstash Redis pricing: upstash.com/pricing/redis
Like this? You'll like what I'm building too.
Two ways to support and get more of this work.
HEARTH
A privacy-first Life OS for your desktop. Journal, tasks, and notes that stay on your machine. Coming soon, direct download from this site.
Read moreMY TOOLKITS
Receipts-first toolkits for shipping after hours, building Claude agents, publishing on Amazon, and more. The exact methods I used, not theory.
Browse on WhopRelated Articles
AI Wrapper Stack Guide for Solo Developers
Complete guide to the AI wrapper stack - when to use it, setup, pros/cons, and alternatives.
Best Tech Stack for Building an AI Wrapper as a Solo Developer
The ideal tech stack for solo developers building an AI wrapper in 2026.
Best Tech Stack for Building an API as a Solo Developer
The ideal tech stack for solo developers building an API in 2026. Framework, database, hosting, auth, and more.