How I Built vibecode.jobs: From Idea to Production

    January 30, 2026

    The Vision

    I wanted to build something different from the typical job board. Most platforms are noisy marketplaces where anyone can post anything. The result? Developers waste time sifting through low-quality listings, and clients struggle to find reliable talent.

    vibecode.jobs takes a different approach: curated quality over quantity. Every job and every freelancer is manually reviewed before going live. This creates a trusted marketplace where both sides know they're dealing with vetted opportunities.

    The Tech Stack

    I chose a modern, pragmatic stack that prioritizes developer experience and production reliability:

    Frontend

    • React 18 with TypeScript for type safety
    • Wouter for lightweight routing (smaller than React Router)
    • TanStack Query for server state management
    • shadcn/ui for consistent, accessible components
    • Tailwind CSS for rapid styling with a terminal-inspired aesthetic

    Backend

    • Express on Node.js with TypeScript
    • Drizzle ORM for type-safe database queries
    • PostgreSQL (Neon-backed) for reliable data storage
    • Auth0 for authentication with multiple providers

    Infrastructure

    • Replit for development and deployment
    • Sentry for error monitoring
    • Environment-based configuration (DEV/PROD secrets)

    Key Design Decisions

    Terminal Aesthetic

    The design draws inspiration from Hacker News and old-school terminal interfaces. This wasn't just aesthetic preference—it communicates something about the platform's values: substance over flash, speed over spectacle.

    I used IBM Plex Mono and Sans fonts to reinforce this identity. The color palette is intentionally muted, letting the content speak for itself.

    Manual Curation

    The core feature is the approval workflow. Both jobs and freelancers go through admin review before appearing publicly. This adds friction, but it's the right kind of friction—it filters out spam and ensures quality.

    Direct Messaging

    Rather than applying through forms, users message each other directly. This creates more human connections and lets both parties assess fit before committing to anything formal.

    Environment-Based Auth

    One of the trickier parts was setting up Auth0 to work across development and production. I created a pattern where all auth secrets are prefixed with DEV_ or PROD_, and the server automatically selects the right set based on NODE_ENV.

    DEV_AUTH0_BASE_URL → Development Replit URL
    PROD_AUTH0_BASE_URL → Production custom domain
    

    This made it seamless to develop locally and deploy to production without environment confusion.

    Lessons Learned

    1. Auth is Always Harder Than Expected

    Even with a managed service like Auth0, there are edge cases. Users logging in with different providers, handling callback URLs across environments, dealing with missing profile claims—all of these required careful handling.

    2. Start with the Schema

    I spent significant time upfront designing the database schema. This paid dividends later—the type safety from Drizzle meant I caught errors at compile time rather than runtime.

    3. SEO from Day One

    Adding SEO meta tags early was worth it. Each page has a custom useSEO hook that sets title, description, and Open Graph tags. This is easy to add incrementally but painful to retrofit.

    4. Documentation Matters

    I kept a detailed replit.md file documenting architecture decisions, environment configuration, and troubleshooting steps. Future me (and anyone else working on this) will thank present me.

    What's Next

    The platform is live and accepting users. Next priorities:

    • Portfolio enrichment from GitHub data
    • Improved skills taxonomy and search
    • Mobile-responsive refinements
    • Community-driven content and resources

    Building vibecode.jobs has been a journey in balancing simplicity with functionality. The curation model won't scale infinitely, but that's intentional—quality marketplaces require human judgment.

    If you're looking for contract work or quality developers, create an account and join the community.