/ tech-stacks / Best Tech Stack for a Job Board as a Solo Developer
tech-stacks 6 min read

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.

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
Email 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 profiles
  • jobs - Listings with title, description, category, location, salary range, remote flag, expires_at
  • applications - Applicant submissions linked to jobs
  • categories - Job categories for filtering
  • locations - 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.completed webhook
  • 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.