Tech stack for a job board (2026)
Remote design job board, designed by StackPrism from one sentence: 9 components, a reason for each, and the live checks that watch them.
The stack
- Sidekiq
- Ruby on Rails
Meilisearch
PostgreSQL
Stripe
- Postmark
Supabase
Redis
Sentry
“A niche job board for remote design jobs: companies pay to post a listing for 30 days, candidates search and filter jobs, save searches and get daily email alerts for new matches.”
Their answers on the constraints step
- Budget
- Up to ~$50/month
- What they know
- Ruby
Make it yours. Open this stack in the editor to check its health, harden it and hand it to your coding agent. No sign-up, nothing to generate.
Start from this stackSelect a component to see what it does and what it connects to, or pick one above to see what breaks if it goes down. Pinch or use the buttons to zoom.
Why this stack
One Ruby on Rails app on Render serves the whole site, because Ruby is what the founder knows. Companies pay for a listing through Stripe, listings live in PostgreSQL on Supabase, and uploads go to Supabase Storage. Meilisearch powers search and filters. Sidekiq workers, also on Render, take jobs from Redis on Upstash: they keep the search index up to date and send the daily alert emails for saved searches through Postmark. Sentry reports errors.
Why each piece
All 9 components on the diagram: what each one does, what it talks to, and what stops if it goes down.
Sidekiq Workers
Runs on Render
Job processing. Calls Meilisearch (reindexes), Redis (Upstash) (reads) and Postmark (sends).
Nothing else on the diagram depends on it.
Ruby on Rails App
Runs on Render
Web application. Calls Meilisearch (indexes), Sentry (reports), PostgreSQL (Supabase) (queries), Stripe (charges), Postmark (emails) and Supabase Storage (uploads).
Nothing else on the diagram depends on it.
Meilisearch
Search engine. Called by Ruby on Rails App (indexes) and Sidekiq Workers (reindexes).
If it goes down, 2 of 8 components degrade.
PostgreSQL (Supabase)
In Data & Storage
Primary data store. Called by Ruby on Rails App (queries).
If it goes down, 1 of 8 components stops working.
Stripe
In External Services
Payments. Called by Ruby on Rails App (charges).
If it goes down, 1 of 8 components degrades.
Postmark
In External Services
Email delivery. Called by Sidekiq Workers (sends) and Ruby on Rails App (emails).
If it goes down, 2 of 8 components degrade.
Supabase Storage
In Data & Storage
Media storage. Called by Ruby on Rails App (uploads).
If it goes down, 1 of 8 components degrades.
Redis (Upstash)
In Data & Storage
Job queue cache. Called by Sidekiq Workers (reads).
If it goes down, 1 of 8 components degrades.
Sentry
Error tracking. Called by Ruby on Rails App (reports).
If it goes down, 1 of 8 components degrades.
When this stack fits
- You know Rails and want one app with server-rendered pages, which search engines read easily.
- Search and filters are the heart of the product.
- Daily alert emails go out in batches, which background workers handle well.
When to pick something else
- You expect a few hundred listings at most: PostgreSQL’s full-text search can replace Meilisearch and leave one service fewer.
- You don’t know Rails: the same shape works with a Next.js app, a job runner and the same data services.
What you need to build this
9 components across 8 areas of the stack.
Build it with your AI agent
Hand the stack to Claude Code, Codex, Cursor or any coding agent as a brief: how it connects, install steps and a build plan.
Backend & APIs2
- Docs
Ruby on Rails App
Web application
Sidekiq Workers
Job processing
Data1
- Docs
PostgreSQL (Supabase)
Primary data store
Cache & queues1
- Docs
Redis (Upstash)
Job queue cache
Payments1
- Docs
Stripe
Payments
npm install stripe
Email & messaging1
Postmark
Email delivery
Search1
- Docs
Meilisearch
Search engine
npm install meilisearch
Storage & CDN1
- Docs
Supabase Storage
Media storage
npm install @supabase/supabase-js
Observability1
- Docs
Sentry
Error tracking
npm install @sentry/nextjs
Install
npm install stripe meilisearch @supabase/supabase-js @sentry/nextjs
SDKs only. Pick your own database driver or ORM.