Skip to content

JobPulse is a full-stack Job Application Tracker built with Next.js to empower job seekers to manage their job hunt efficiently.

Notifications You must be signed in to change notification settings

Titus-waititu/JobPulse

Repository files navigation

JobPulse - Full-Stack Job Board Application

A modern, full-stack job board application built with Next.js 14, Neon Postgres, Prisma ORM, and NextAuth.js.

🚀 Features

Core Features

  • User Authentication: Email/password and OAuth (Google) login
  • Role-based Access: Job seekers and employers with different permissions
  • Job Listings: Browse, search, and filter job postings
  • Job Applications: Apply for jobs with resume uploads
  • User Dashboard: Personalized dashboard for managing applications and profile
  • Employer Features: Post, edit, and manage job listings
  • Responsive Design: Mobile-friendly and accessible UI

Technical Features

  • Next.js 14 with App Router for SSR and SSG
  • Neon Postgres serverless database with connection pooling
  • Prisma ORM for type-safe database operations
  • NextAuth.js for secure authentication
  • Tailwind CSS for modern, responsive styling
  • TypeScript for type safety
  • Zod for runtime validation
  • React Hook Form for form handling

🛠️ Tech Stack

  • Frontend: Next.js 14, React, TypeScript, Tailwind CSS
  • Backend: Next.js API Routes, Prisma ORM
  • Database: Neon Postgres (Serverless PostgreSQL)
  • Authentication: NextAuth.js
  • UI Components: Radix UI, Lucide React
  • Form Handling: React Hook Form, Zod validation
  • State Management: Zustand, React Context
  • Deployment: Vercel

📁 Project Structure

jobpulse/
├── prisma/
│   └── schema.prisma          # Database schema
├── src/
│   ├── app/                   # Next.js App Router
│   │   ├── api/              # API routes
│   │   ├── auth/             # Authentication pages
│   │   ├── dashboard/        # User dashboards
│   │   ├── jobs/             # Job listing pages
│   │   └── layout.tsx        # Root layout
│   ├── components/           # Reusable components
│   │   └── ui/              # UI component library
│   ├── lib/                  # Utilities and configurations
│   │   ├── auth.ts          # NextAuth configuration
│   │   ├── prisma.ts        # Prisma client
│   │   ├── utils.ts         # Utility functions
│   │   └── validations.ts   # Zod schemas
│   └── types/               # TypeScript type definitions
└── public/                   # Static assets

🔧 Setup Instructions

Prerequisites

  • Node.js 18+
  • npm or yarn
  • A Neon Postgres database (free tier available)

1. Clone and Install Dependencies

git clone <repository-url>
cd jobpulse
npm install

2. Database Setup

  1. Create a Neon Database:

    • Visit neon.tech and create a free account
    • Create a new project and database
    • Copy the connection string from the dashboard
  2. Environment Variables:

    • Copy .env.example to .env
    • Fill in your database credentials:
# Database (Neon Postgres)
DATABASE_URL="postgresql://username:password@your-neon-hostname/your-database?sslmode=require"
DIRECT_URL="postgresql://username:password@your-neon-hostname/your-database?sslmode=require"

# NextAuth.js
NEXTAUTH_SECRET="your-nextauth-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# OAuth Providers (Optional)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
  1. Initialize Database:
npx prisma generate
npx prisma db push

3. Development

npm run dev

Visit http://localhost:3000 to see the application.

🗄️ Database Schema

Core Models

  • User: User profiles with role-based access (Job Seeker/Employer)
  • Job: Job postings with company details and requirements
  • Application: Job applications linking users to jobs
  • SavedJob: Saved jobs for later viewing

Enums

  • UserRole: JOB_SEEKER, EMPLOYER, ADMIN
  • JobType: FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP, FREELANCE
  • WorkType: ON_SITE, REMOTE, HYBRID
  • ApplicationStatus: PENDING, REVIEWED, INTERVIEW, REJECTED, ACCEPTED

🔐 Authentication Flow

  1. Users can sign up as either Job Seekers or Employers
  2. Email/password authentication with bcrypt hashing
  3. Optional Google OAuth integration
  4. JWT-based sessions with NextAuth.js
  5. Role-based redirects after login

🚀 Deployment

Deploy to Vercel

  1. Prepare for Deployment:
npm run build
  1. Deploy to Vercel:

    • Connect your GitHub repository to Vercel
    • Set environment variables in Vercel dashboard
    • Deploy automatically on push to main branch
  2. Environment Variables (Vercel):

    • Copy all variables from .env to Vercel settings
    • Update NEXTAUTH_URL to your production domain

JobPulse - Connecting talent with opportunity in the modern workforce.

About

JobPulse is a full-stack Job Application Tracker built with Next.js to empower job seekers to manage their job hunt efficiently.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published