/ tech-stacks / Best Tech Stack for a Job Board as a Solo Developer
tech-stacks 8 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.

Hero image for Best Tech Stack for a Job Board as a Solo Developer

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. It is also a serious, well-maintained project, not a hobby framework: the repo sits at 59,658 GitHub stars and the astro npm package pulls roughly 3.05 million downloads a week (checked 2026-05-30). The current stable release is Astro 6.4.2.

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. It has become a default pick in the TypeScript world for a reason: 34,582 GitHub stars and around 9.72 million weekly npm downloads of drizzle-orm (checked 2026-05-30), with 0.45.2 as the current release.

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 genuinely usable free tier (0.5 GB of storage and 100 CU-hours of compute per project, no credit card required), then move to the pay-as-you-go Launch plan ($0.106 per CU-hour and $0.35 per GB-month) once you outgrow it. Or pick Supabase if you want a dashboard for quick data inspection; its free tier gives you 500 MB of database and two active projects, and the Pro plan starts at $25/month (all checked 2026-05-30). One Supabase caveat for a low-traffic launch: free projects get suspended after a week of inactivity, so a brand-new board with no visitors yet can go to sleep on you.

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 actively developed: 57,828 GitHub stars, with v1.45.1 shipped on 2026-05-28 (checked 2026-05-30). You can self-host the open-source binary for free, or use Meilisearch Cloud, which offers a 14-day free trial and resource-based plans starting around $23/month for an extra-small instance. 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 Hobby tier is generous enough for a job board with moderate traffic, with 1 million edge requests, 100 GB of fast data transfer, and 4 hours of active function CPU per month included. When you outgrow it, Pro is $20 per user per month and bundles a $20 monthly usage credit (checked 2026-05-30).

Cloudflare Pages is the alternative if you want edge deployment (faster globally) and prefer Cloudflare's ecosystem. Its free plan is notably hard to beat for a content-heavy site: unlimited static requests, unlimited bandwidth, and 500 builds per month, with Pro at $20/month billed annually or $25/month billed monthly (checked 2026-05-30). 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. There is no monthly fee to start; Stripe's standard US online rate is 2.9% plus 30 cents per successful domestic card transaction (checked 2026-05-30). On a $200 job listing that is roughly $6.10 in fees, which is trivial against the revenue.

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). The free tier covers 3,000 emails per month capped at 100 per day, and the Pro plan is $20/month for 50,000 emails (checked 2026-05-30), which carries most boards a long way
  • 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

All figures checked on 2026-05-30 against each vendor's pricing page.

Service Cost
Vercel (free Hobby or Pro) $0-20/user/month
Neon Postgres (free tier, then pay-as-you-go) $0 to start
Meilisearch Cloud (if needed, else self-host free) $0-23+/month
Resend (free tier, then Pro) $0-20/month
Stripe 2.9% + 30c per transaction
Domain ~$1/month
Total ~$1-64/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.

Sources

All figures below were checked on 2026-05-30.

Built by Kevin

Like this? You'll like what I'm building too.

Two ways to support and get more of this work.

Desktop App

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 more
Digital Products

MY 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 Whop

Need This Built?

Kevin builds products solo, from first version to live. If you want something like this made, work with him.