JoinRemotes.com

A full-stack remote job board and talent marketplace built with Next.js 16, Prisma, PostgreSQL, Better Auth, and Dodo Payments.

Date2026Reading6 min readTags

Stacks

Next.js 16TypeScriptTailwind CSSPrismaPostgreSQLBetter AuthRedisBullMQDodo PaymentsBiomeDocker

Project Overview

JoinRemotes.com is a production-oriented remote hiring platform built as a two-sided marketplace for job seekers and employers. Instead of stopping at a searchable list of vacancies, I designed it as a full product system: job discovery, talent profiles, employer workflows, billing, analytics, moderation, and automated alerts all live inside the same application.

The goal of the project was to explore what it takes to build a remote-first platform that feels useful on both the public-facing side and the operational side. That meant treating marketplace UX, SEO, payments, admin tools, and background jobs as first-class parts of the product rather than bolting them on later.


Product Direction

Two-Sided Marketplace Thinking

JoinRemotes is structured around three core audiences:

  • Job Seekers who browse remote jobs, save listings, and subscribe to alerts
  • Employers who create company profiles, publish paid job posts, and monitor listing performance
  • Admins who moderate submissions, review companies, and keep platform quality high

That product shape influenced almost every architecture decision. Search, SEO, payments, and moderation all had to work together without making the experience feel heavy.

Why I Built It This Way

I wanted this project to reflect the kind of systems I enjoy building most: products where business logic, user experience, and operations are tightly connected. A remote job board looks simple from the outside, but once payments, trust, analytics, and automation enter the picture, it becomes a much more interesting engineering problem.


Technical Architecture

Core Stack

  • Next.js 16 App Router for routing, server rendering, and server actions
  • TypeScript with strict typing across app, actions, and infrastructure code
  • Prisma + PostgreSQL for relational data modeling and type-safe queries
  • Tailwind CSS for fast UI composition across public, dashboard, and admin surfaces

Authentication, Payments, and Data Flow

  • Better Auth powers session management, magic links, and OAuth-ready authentication flows
  • Dodo Payments handles pay-per-submit job posting with webhook-driven verification
  • Redis and BullMQ support worker-style background processing and scheduled workflows
  • Server Actions are used for key mutations such as job alerts, billing access, and saved job flows

SEO and Distribution

  • Structured metadata and JSON-LD are generated for collection and detail pages
  • SEO-friendly route structure supports jobs, categories, talents, and public profile pages
  • Weekly digest automation extends the product beyond page views into retention workflows

Key Features & Capabilities

Remote Job Discovery

  • Searchable jobs directory with filters for query, location, remote type, employment type, and salary range
  • Category and subcategory based browsing for better information architecture
  • Individual job pages with SEO metadata and shareable public URLs

Talent Directory

  • Public talent listing pages for remote professionals
  • Skill-based filtering and paginated browsing
  • Profile pages that can act as lightweight public talent cards

Employer Workflows

  • Paid job posting flow designed around a simple pay-per-submit model
  • Billing history view for completed payments and invoices
  • Employer dashboard for managing submissions and reviewing listing performance
  • Editing flows for live job posts without rebuilding the whole submission process

Analytics & Product Feedback Loops

  • Dashboard-level company and listing analytics
  • Per-job reporting views for unique views, apply intent, conversion rate, and days live
  • Recommendation blocks that turn raw metrics into more actionable insights

Platform Operations

  • Admin moderation queue for jobs and company review workflows
  • Weekly digest pipeline with signed cron triggers and timestamp validation
  • Saved jobs and job alerts for retention and repeat engagement
  • Support and advertise pages that round out the platform as a real product business

Engineering Challenges & Solutions

Building for Multiple Roles in One Product

Challenge: The platform serves job seekers, employers, agencies, and admins, each with very different expectations and permissions.

Solution: I kept the experience role-aware at the page and data-access level. Public pages stay discovery-first, while authenticated dashboard surfaces adapt based on role and available business data.

Making Payments Feel Native to the Job Posting Flow

Challenge: Monetization needed to support paid postings without making employers feel like they were entering a billing product before publishing a job.

Solution: I used a focused pay-per-submit architecture with Dodo Payments, webhook validation, pricing surfaced clearly in the UI, and billing history available inside settings after purchase.

Treating Moderation and Trust as Product Features

Challenge: Marketplaces become noisy quickly if moderation is treated as an afterthought.

Solution: I built moderation queues and admin review actions directly into the platform so quality control is part of the day-to-day workflow, not an external manual process.

Combining SEO Pages with Operational Workflows

Challenge: The app needed strong search visibility for public content while also supporting private dashboards, scheduled alerts, and background jobs.

Solution: I separated concerns clearly: public pages focus on metadata, discoverability, and structured data, while internal routes and scheduled endpoints handle retention and operations.


Operational Considerations

JoinRemotes is also a good example of how product engineering extends beyond UI implementation.

  • Environment-driven configuration for payments, auth, storage, and worker communication
  • Docker-friendly setup for local infrastructure and production packaging
  • Cron-triggered digest delivery with HMAC signature validation for safer automation
  • Email and storage integrations prepared for real-world product workflows

I wanted the codebase to be usable as an actual platform foundation, not just a prototype optimized for screenshots.


What This Project Demonstrates

This project reflects the kind of work I like doing most:

  • designing full-stack products around real business workflows
  • balancing public growth surfaces with private operational tooling
  • building clean user experiences on top of non-trivial backend logic
  • thinking about trust, automation, and monetization from the start

JoinRemotes sits at the intersection of product design, platform engineering, and marketplace architecture, which is exactly why it has been one of my favorite projects to build.


Lessons Learned

  • Marketplace products become significantly more interesting once you include trust and monetization systems
  • Admin tools deserve as much product thinking as customer-facing pages
  • Analytics are more useful when they help users decide what to do next, not just report numbers
  • Good SEO architecture matters even more when public pages are the acquisition channel for the product

If I continue expanding JoinRemotes, the next areas I would push further are recommendation quality, employer self-serve tooling, and stronger lifecycle automation for candidates and companies.

Let’s work together

I design scalable platforms and streamline infrastructure so your team can move faster, safer, and smarter.

Start the Conversation

© 2026 Raditya Surya. All rights reserved.