Seeded as a launch-ready MVP sold as one bundle covering the web app, custom auth, admin moderation, and the ops + observability baseline. Capability metadata, MIT license, reviews, and platform-hosted purchase fields are populated. Tests cover unit, integration, and Mailpit-backed E2E for the verify-email + password-reset round-trip.
Hireloop is a self-hostable, production-grade job board built on Next.js 15 (App Router), Postgres 16, and Drizzle ORM. Candidates browse, filter, and bookmark roles; employers create a free account, post a job, and manage their listings from any device; admins moderate the board. The auth layer uses bcryptjs work-factor-12 password hashes and opaque session tokens (raw bytes in an HttpOnly cookie, only sha256(token) stored server-side) with a 30-day sliding expiry. Email verification and password reset use atomic UPDATE ... RETURNING tokens so replay is impossible, with Resend in production and Mailpit/SMTP in dev/CI. Self-serve account deletion soft-deletes the user, scrubs PII, and closes every owned posting (GDPR-aligned). Every /api/auth/* and /api/me/* endpoint sits behind in-memory rate limits and is wrapped in a top-level handler that emits structured JSON logs (request id, route, method, ip, status, ms) and returns a sanitised 500 so Drizzle internals never leak through. Security headers (HSTS, CSP, X-Frame-Options: DENY, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) are set in next.config.ts and apply to every route. /api/health and /api/ready expose liveness + readiness probes for any load balancer or orchestrator. Sentry integration is one env var (SENTRY_DSN) away; the SDK is dynamically imported so a deploy without it pays zero cost. Tests: 80 unit (Vitest), integration suite against an ephemeral Postgres (testcontainers), and Playwright E2E that round-trips the verify-email and password-reset flows through Mailpit in CI. SEO: per-listing schema.org JobPosting JSON-LD (Google for Jobs ready), canonical URLs, OG image, sitemap, robots disallow on every gated route, and a bundle-size budget enforced in CI. Ideal for indie founders launching a niche job board, agencies building white-label boards for clients, internal hiring portals at companies that want first-party data, and developers learning a modern Next.js + Postgres + auth-from-scratch stack. Ships as a clean, documented codebase so you can rebrand, extend and deploy without starting from scratch.
A self-hostable, MIT-licensed job board built on Next.js 15 (App Router), React 19, Postgres 16, and Drizzle ORM. Ships with bcrypt + opaque-session auth, email verification, password reset, self-serve account deletion (GDPR), admin moderation, rate limiting on every auth endpoint, security headers, structured logging, health probes, an optional Sentry hook, and a Playwright E2E suite that round-trips the verify-email and password-reset flows through Mailpit in CI. Built for founders launching a niche job board, agencies shipping white-label hiring portals for clients, and companies building internal hiring sites that want first-party data instead of paying LinkedIn.
Job boards are a proven, durable business model — Indeed, LinkedIn Jobs, We Work Remotely, Y Combinator's Work at a Startup, AngelList Talent. They scale on inventory (listings) and audience (candidates), and they monetise via featured listings, employer subscriptions, or per-post fees once you reach scale.
The hard parts are the boring ones: auth that won't get you breached, rate limits that survive launch on Hacker News, account-deletion flows that satisfy GDPR, admin tooling for spam moderation, the SEO scaffolding that gets you into Google for Jobs, and the operational baseline (health checks, structured logs, request IDs) that makes a 3 AM incident debuggable. Most "starter" job board templates skip all of that.
Hireloop ships the boring parts as a finished baseline. You add your niche, your seed listings, your branding, and you have a real product on day one — not a 6-month checklist.
sha256(token) stored in user_sessions. A leaked DB row can't be replayed as a cookie. 30-day sliding expiry.UPDATE … RETURNING token consumption means single-use tokens with replay protection at the database level, not just the application.Retry-After.X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy, and a tight CSP — applied to every route.x-request-id. Sanitised 500s so Drizzle / Postgres internals never leak through the response body./api/health (liveness, no DB hit) and /api/ready (SELECT 1 against Postgres, 503 on failure) for any load balancer or orchestrator.SENTRY_DSN) away. The SDK is dynamically imported so a deploy without it pays zero runtime cost.JobPosting JSON-LD (Google for Jobs ready), canonical URLs on every detail page, sitemap, robots disallow on every gated route, generated 1200×630 OG image.postgres:16-alpine + axllent/mailpit:v1.21 services and runs lint → typecheck → unit → migrate → integration → seed → build → bundle-size budget → Playwright → postgres logs on failure./jobs for a week.A "complete" job board, in the boring details, is 3 to 6 months of work beyond the obvious CRUD. Hireloop does that work for you.
For a solo founder, this is the difference between launching a job board this quarter and still wiring auth next quarter.
withApi handler wrapper — request ID, entry/exit logs, sanitised 500s/api/health (liveness) + /api/ready (DB readiness, 503 on failure)SENTRY_DSN)Ideal for founders launching a niche or regional job board, agencies building white-label hiring portals, companies running internal hiring sites, and developers learning a modern Next.js + Postgres + auth-from-scratch stack with the operational hygiene of a real production app.
Solid foundation for niche job boards. Filter UX is good, slug-based public URLs are clean, the schema.org JobPosting JSON-LD makes Google-for-Jobs indexing one config-flip away. Would love to see optional 2FA and a per-route bundle budget in a future revision, but the v1 quality bar is high.
The operational baseline is what sold me. Structured JSON logs with a request id, /api/health + /api/ready, security headers in next.config.ts, sanitised 500s, a bundle-size budget in CI, and a Mailpit-backed E2E that round-trips the verify-email and password-reset flows. You can hand this to a buyer and they have a real production checklist already met.
This is the rare job-board starter that takes auth seriously. Bcrypt with proper work factor, opaque session tokens hashed at rest, atomic single-use verification + reset tokens, rate limits on every auth endpoint — and self-serve account deletion that actually scrubs PII. Most "starter" repos cut corners on at least three of those.