Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tech-dipesh/yeti-Jobs/llms.txt

Use this file to discover all available pages before exploring further.

Yeti Jobs is a full-stack job portal platform built on the PERN stack — PostgreSQL, Express, React, and Node.js. It brings together job seekers, recruiters, and platform administrators under a single unified system with role-based access control, ATS résumé scoring, full-text job search, file storage via Supabase, and automated background tasks powered by node-cron. Whether you’re searching for your next opportunity, managing a company’s hiring pipeline, or overseeing the entire platform, Yeti Jobs provides a purpose-built experience for every role.

Who Is Yeti Jobs For?

Yeti Jobs is designed around three distinct user roles, each with their own set of capabilities and access boundaries enforced at the client, server, and database levels.

Job Seekers

Search and browse job listings, apply or withdraw applications, bookmark jobs, upload résumés and profile pictures, receive ATS scoring and feedback, view company profiles, and manage a personal notifications panel.

Recruiters

Create, edit, and delete job postings under a company, manage all applicants and move them through hiring stages (applied → shortlisted → hired / rejected), view company dashboard stats, and manage company followers.

Admins

Assign users to companies, create and update company records, access a full company overview dashboard, and view platform-wide statistics including total jobs, applications, open listings, and followers.

Tech Stack

Every layer of Yeti Jobs is built with production-proven, open-source technology. The table below maps each tool to its role in the system.
LayerTechnologyVersion
Frontend UIReact19.2.0
StylingTailwindCSS4.2.1
RoutingReact Router7.13.1
HTTP ClientAxios1.13.5
RuntimeNode.jsLTS
API FrameworkExpress5.2.1
DatabasePostgreSQL (raw SQL)15
ORM / Querypg driver8.18.0
File StorageSupabase Storage
ContainerisationDocker / Docker Compose
Frontend DeployVercel
Backend DeployRender

Key Capabilities

  • Role-Based Access Control (RBAC) — guest, recruiter, and admin roles enforced across the client routing layer, Express middleware chain, and PostgreSQL constraints simultaneously.
  • ATS Résumé Scoring — résumés are parsed with pdf-parse and scored by the Groq AI API (GROK_API), returning a numeric score and structured feedback stored in the ats_score table.
  • Full-Text Job Search — a GIN index on the jobs.search_title tsvector column replaces slow ILIKE prefix queries for sub-millisecond search at scale.
  • JWT Authentication — stateless JSON Web Tokens stored in HTTP-only cookies with configurable expiry (MAXAGE), signed with JSON_SECRET_KEY.
  • Email Verification & Password Reset — Nodemailer sends verification and reset codes with strict rate limiting (2 req/min) to prevent abuse.
  • Automated Job Expiry — a node-cron task runs every night at midnight and closes any job posting older than 30 days.
  • Supabase File Storage — résumés, profile pictures, and company logos are uploaded directly to Supabase Storage buckets; public URLs are persisted in the database.
  • Swagger API Documentation — interactive API explorer available at /api/v1/swagger.
  • Rate Limiting & Security Headersexpress-rate-limit enforces 200 req/min globally; helmet strips X-Powered-By and adds security response headers against XSS and other vectors.
  • Pagination — job listings and company pages return paginated results to keep payload size bounded.

Explore Further

Quickstart

Clone the repo, configure your environment variables, run migrations, and have the full stack running locally in under 10 minutes.

Architecture

Deep-dive into the layered PERN architecture, MVC backend structure, PostgreSQL schema design, and third-party service integrations.
A live demo of Yeti Jobs is deployed at yeti-jobs.vercel.app. The backend API and Swagger UI are available at yeti-jobs.onrender.com/api/v1/swagger. Note that the Render free tier may experience a cold-start delay of up to 30 seconds after a period of inactivity.

Build docs developers (and LLMs) love