Best Tech Stack for a Job Board as a Solo Developer
The best tech stack for building a job board as a solo developer - frameworks, databases, hosting, and tools.
Best Tech Stack for a Job Board as a Solo Developer
Niche job boards are quietly profitable businesses. While Indeed and LinkedIn dominate the general market, specialized boards like RemoteOK, We Work Remotely, and various industry-specific boards generate $10k-100k+/month with tiny teams. The technical requirements are straightforward: list jobs, let people search and filter, accept payments from employers, and rank well in Google. A solo developer can build and launch one in a few weeks with the right stack.
Here's exactly what to use.
Recommended Stack at a Glance
| Layer | Pick |
|---|---|
| Framework | Astro (with React islands) |
| Database | PostgreSQL |
| Search | Meilisearch or PostgreSQL full-text |
| ORM | Drizzle ORM |
| Hosting | Vercel or Cloudflare Pages |
| Payments | Stripe Checkout |
| Resend |
Frontend: Astro
Job boards are fundamentally content sites. The vast majority of pages (job listings, category pages, location pages) are static or near-static content that changes maybe a few times per day. Astro is purpose-built for this.
Astro generates static HTML by default, which means your job listing pages load instantly and Google loves them. For the interactive parts (search with live filtering, application forms, employer dashboards), drop in React components as "islands" that hydrate only where needed.
This architecture gives you the best of both worlds:
- SEO performance - Static pages with perfect Core Web Vitals scores
- Interactivity - React components where you need dynamic behavior
- Build speed - Only the pages that changed get rebuilt
For a job board, SEO is everything. Job seekers search "remote python developer jobs" and you need those listing pages ranking. Astro's static output with proper meta tags, structured data (JobPosting schema), and fast load times gives you a real advantage.
Backend: Astro Server Endpoints + API Routes
Astro supports server-side rendering and API routes, so you can handle backend logic without a separate server. Your API needs are simple:
- Job CRUD - Create, update, expire job listings
- Search - Filter by location, category, salary, remote status
- Applications - Accept and forward applications to employers
- Payments - Stripe webhook processing
- Admin - Approve/reject listings, manage categories
For the admin dashboard and employer portal, use React components within Astro. These are the only pages that need full client-side interactivity.
Database: PostgreSQL
A job board's data model is clean and relational: jobs, companies, categories, locations, applications. PostgreSQL handles this perfectly and its built-in full-text search might be all you need for job search.
Drizzle ORM is the best choice for TypeScript projects. It's lightweight, type-safe, and generates efficient SQL. No magic, no hidden queries, just clean TypeScript that maps to SQL.
Your core schema is simple:
companies- Employer profilesjobs- Listings with title, description, category, location, salary range, remote flag, expires_atapplications- Applicant submissions linked to jobscategories- Job categories for filteringlocations- Structured location data for geo-filtering
Host on Neon for serverless Postgres with a generous free tier, or Supabase if you want a dashboard for quick data inspection.
Search: Start Simple, Scale When Needed
For job board search, you have two paths:
PostgreSQL full-text search (start here): Postgres's tsvector and tsquery handle keyword search well enough for boards with under 10,000 listings. Add a GIN index on your searchable columns and you get fast, relevant results without any external service. This keeps your architecture simple.
Meilisearch (scale to this): When you need instant search-as-you-type, faceted filtering (filter by multiple categories, salary ranges, locations simultaneously), and typo tolerance, Meilisearch is the best self-hosted option. It's fast, easy to set up, and has a generous cloud-hosted tier. Sync your Postgres data to Meilisearch on job create/update.
Don't start with Elasticsearch. It's overkill for a job board and painful to maintain solo.
Hosting: Vercel or Cloudflare Pages
Since Astro generates mostly static pages, hosting is cheap and fast on any static hosting platform.
Vercel is the easiest option. Push to GitHub, it deploys. Server-side routes and API endpoints run as serverless functions. The free tier is generous enough for a job board with moderate traffic.
Cloudflare Pages is the alternative if you want edge deployment (faster globally) and prefer Cloudflare's ecosystem. Pair it with Cloudflare Workers for your API routes and D1 for a database if you want to stay entirely within Cloudflare's stack.
Payments: Stripe Checkout
Job boards typically charge employers per listing ($100-500 for 30 days) or via subscription plans. Stripe Checkout handles this with minimal code:
- Create a Checkout Session when an employer submits a listing
- Redirect them to Stripe's hosted payment page
- Listen for the
checkout.session.completedwebhook - Activate the job listing
This is maybe 50 lines of code total. Don't build a custom payment form. Stripe Checkout handles card validation, 3D Secure, Apple Pay, Google Pay, and dozens of local payment methods.
For recurring plans (unlimited monthly listings), use Stripe Subscriptions with the Customer Portal so employers can manage their own billing.
Nice-to-Haves
- Resend for job alert emails (biggest retention driver for job boards)
- JobPosting structured data (Schema.org) for Google Jobs integration
- Cloudflare Turnstile for spam prevention on application forms
- Plausible or Umami for privacy-friendly analytics
- RSS feed for job listings (attracts aggregators and power users)
- Sitemap generation for SEO (Astro has a built-in plugin)
Monthly Cost Breakdown
| Service | Cost |
|---|---|
| Vercel (free or Pro) | $0-20/month |
| Neon Postgres (free tier) | $0 |
| Meilisearch Cloud (if needed) | $0-30/month |
| Resend (free tier) | $0 |
| Stripe | 2.9% + 30c per transaction |
| Domain | $1/month |
| Total | ~$1-51/month + Stripe fees |
A job board can run profitably on near-zero infrastructure costs. Your first paid listing covers months of hosting.
Conclusion
The best stack for a solo developer building a job board: Astro with React islands for SEO-first pages, PostgreSQL with Drizzle ORM for data, PostgreSQL full-text search to start (Meilisearch later), Stripe Checkout for payments, and Vercel for hosting.
The key to a successful job board isn't the tech, it's the niche. Pick a specific industry, role type, or work style (remote, part-time, contract) and own it. The tech stack above handles everything from 10 listings to 100,000 with minimal changes. Focus on getting employers to post and job seekers to visit. Everything else is secondary.
Related 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 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.