Skip to content

This is a Job site, recruiters can add JOB post, applicants can apply for those jobs with AI assistant.

License

Notifications You must be signed in to change notification settings

SjxSubham/JOB-SEEK

Repository files navigation

JobSeek - AI-Powered Job Search Platform

Live Demo

JobSeek is an intelligent job search platform that leverages AI to help users find their dream jobs more effectively. The platform provides personalized job recommendations, resume analysis, and smart matching algorithms.

job-seek

๐Ÿš€ Live Demo

Visit our live application at: JOB-SEEK

๐Ÿ› ๏ธ Tech Stack

Frontend

  • React.js (Vite) - Fast and modern frontend framework
  • Tailwind CSS - Utility-first CSS framework
  • Clerk - Authentication and user management
  • Zod - TypeScript-first schema validation

Backend

  • Supabase - Backend as a Service (BaaS)
    • Database
    • Authentication
    • RLS Policy Secured database
    • Storage

๐Ÿ› ๏ธ Setup Instructions

  1. Clone the repository:
git clone https://github.com/SjxSubham/JOB-SEEK 
  1. Install dependencies:
npm install
  1. Environment Setup:

    • Copy .env.sample to .env
    • Add your own API keys and configuration values
    • Required environment variables:
      • VITE_SUPABASE_URL: Your Supabase project URL
      • VITE_SUPABASE_ANON_KEY: Your Supabase anonymous key
      • VITE_CLERK_PUBLISHABLE_KEY: Your Clerk publishable key
      • VITE_HUGGINGFACE_API_TOKEN: Your Hugging Face API token
      • Other configuration variables as specified in .env.sample
  2. Run the development server:

npm run dev
  1. Build for production:
npm run build npm preview

๐Ÿค– AI Integration and Job Matching

AI Job Recommendation Feature

The AI Job Recommendation feature uses the Mistral-7B-Instruct-v0.2 model from Hugging Face to provide personalized job matches based on user profiles. Here's how it works: (work is still going on...)

Frontend Implementation

  • Located in src/components/AIJobRecommendation.tsx
  • Collects user profile data including:
    • Skills
    • Years of experience
    • Preferred location
    • Remote work preference
    • Salary expectations
    • Job type preferences
    • Education background
  • Displays job matches in a clean card layout with:
    • Job title and company
    • Match score
    • Job description
    • Required skills

Backend Implementation

  • Uses Hugging Face's API with Mistral-7B-Instruct-v0.2 model
  • Located in src/services/aiService.ts
  • Processes user profile data and generates a structured prompt
  • Returns top 3 job matches with match scores and relevant details

Environment Setup

  1. Add your Hugging Face API key to .env:
VITE_HUGGINGFACE_API_KEY=your_api_key_here 

Usage

  1. Navigate to the AI Job Recommendation section
  2. Fill in your profile details
  3. Click "Find My Matches"
  4. View your personalized job recommendations

Technical Details

  • The AI model analyzes the user profile and generates job matches based on:
    • Skill compatibility
    • Experience level
    • Location preferences
    • Salary expectations
    • Job type preferences
  • Each match includes a match score (0-1) indicating the relevance
  • The response is formatted in JSON and processed for display

๐Ÿ“š API Documentation

Authentication

The platform uses Clerk for authentication. To access protected endpoints, include the session token in the request headers:

headers: {'Authorization': `Bearer ${sessionToken}`,'Content-Type': 'application/json'}

Endpoints

Jobs

  • GET /api/jobs - Get all jobs
  • GET /api/jobs/:id - Get job by ID
  • POST /api/jobs - Create new job
  • PUT /api/jobs/:id - Update job
  • DELETE /api/jobs/:id - Delete job

Companies

  • GET /api/companies - Get all companies
  • GET /api/companies/:id - Get company by ID
  • POST /api/companies - Create new company
  • PUT /api/companies/:id - Update company
  • DELETE /api/companies/:id - Delete company

Users

  • GET /api/users/profile - Get user profile
  • PUT /api/users/profile - Update user profile
  • GET /api/users/saved-jobs - Get user's saved jobs
  • POST /api/users/saved-jobs/:jobId - Save a job
  • DELETE /api/users/saved-jobs/:jobId - Remove a saved job

RESTful endpoint for querying and managing your database

๐Ÿ—๏ธ Code Architecture

Frontend Structure

โ”œโ”€โ”€ public/ # static assets โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ components/ # Reusable UI components โ”‚ โ”‚ โ”œโ”€โ”€ ui/ # Job listing card component โ”‚ โ”œโ”€โ”€ data/ # JSON Data โ”‚ โ”œโ”€โ”€ pages/ # React pages and routing โ”‚ โ”œโ”€โ”€ hooks/ # fectching database.data โ”‚ โ”œโ”€โ”€ styles/ # Global styles and Tailwind config โ”‚ โ”œโ”€โ”€ utils/ # Helper functions and utilities โ”‚ โ”œโ”€โ”€ api/ # Supabase and API integration | โ”œโ”€โ”€ lib/ โ”‚ โ””โ”€โ”€ types/ # TypeScript type definitions โ”œโ”€โ”€ .env.sample # Environment variables template โ””โ”€โ”€ vite.config.ts # Vite configuration 

Complete Project File Structure

JOB-SEEK/ โ”œโ”€โ”€ ๐Ÿ“ public/ # Static assets โ”‚ โ”œโ”€โ”€ ๐Ÿ–ผ๏ธ vite.svg โ”‚ โ””โ”€โ”€ ๐Ÿ“„ index.html โ”œโ”€โ”€ ๐Ÿ“ src/ # Source code โ”‚ โ”œโ”€โ”€ ๐Ÿ“ api/ # Supabase API integration layer โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ”ง apiJobs.js # Job CRUD operations โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ”ง apiApplication.js # Application management โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ”ง apiCompanies.js # Company data operations โ”‚ โ”œโ”€โ”€ ๐Ÿ“ components/ # Reusable UI components โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ ui/ # Base UI components โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿงฉ header.jsx # Navigation header โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ”’ protected-route.jsx # Route protection โ”‚ โ”‚ โ””โ”€โ”€ ๐ŸŽจ theme-provider.jsx # Theme management โ”‚ โ”œโ”€โ”€ ๐Ÿ“ data/ # Static JSON data โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“Š companies.json # Company listings โ”‚ โ”‚ โ””โ”€โ”€ โ“ faq.json # FAQ content โ”‚ โ”œโ”€โ”€ ๐Ÿ“ hooks/ # Custom React hooks โ”‚ โ”‚ โ””โ”€โ”€ ๐ŸŽฃ use-fetch.js # Data fetching hook โ”‚ โ”œโ”€โ”€ ๐Ÿ“ layouts/ # Layout components โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ app-layout.jsx # Main app layout โ”‚ โ”œโ”€โ”€ ๐Ÿ“ lib/ # Utility libraries โ”‚ โ”œโ”€โ”€ ๐Ÿ“ pages/ # React pages/routes โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ  landing.jsx # Landing page โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ‘ค onboarding.jsx # User onboarding โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“‹ jobListing.jsx # Job listings โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ job.jsx # Job details โ”‚ โ”‚ โ”œโ”€โ”€ โž• post-job.jsx # Job posting โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ’ผ my-jobs.jsx # Recruiter jobs โ”‚ โ”‚ โ””โ”€โ”€ โญ saved-jobs.jsx # Saved jobs โ”‚ โ”œโ”€โ”€ ๐Ÿ“ utils/ # Helper utilities โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ”Œ supabase.js # Supabase client config โ”‚ โ”œโ”€โ”€ ๐ŸŽจ App.css # Global styles โ”‚ โ”œโ”€โ”€ โš›๏ธ App.jsx # Main App component โ”‚ โ”œโ”€โ”€ ๐ŸŽจ index.css # Base styles โ”‚ โ””โ”€โ”€ ๐Ÿš€ main.jsx # App entry point โ”œโ”€โ”€ ๐Ÿ“„ .env.sample # Environment variables template โ”œโ”€โ”€ ๐Ÿ“„ .gitignore # Git ignore rules โ”œโ”€โ”€ ๐Ÿ“„ components.json # shadcn/ui config โ”œโ”€โ”€ ๐Ÿ“„ eslint.config.js # ESLint configuration โ”œโ”€โ”€ ๐Ÿ“„ jsconfig.json # JavaScript config โ”œโ”€โ”€ ๐Ÿ“„ package.json # Dependencies & scripts โ”œโ”€โ”€ ๐Ÿ“„ postcss.config.js # PostCSS config โ”œโ”€โ”€ ๐Ÿ“„ README.md # Project documentation โ”œโ”€โ”€ ๐Ÿ“„ tailwind.config.js # Tailwind CSS config โ”œโ”€โ”€ ๐Ÿ“„ vercel.json # Vercel deployment config โ””โ”€โ”€ ๐Ÿ“„ vite.config.js # Vite build config 

Client-Server Architecture & Data Flow

graph TB subgraph "๐Ÿ–ฅ๏ธ CLIENT (Frontend)" A[โš›๏ธ React App<br/>Vite + Tailwind] B[๐ŸŽฃ Custom Hooks<br/>use-fetch.js] C[๐Ÿ”ง API Layer<br/>apiJobs, apiApplication, apiCompanies] D[๐Ÿ”’ Authentication<br/>Clerk JWT] E[๐Ÿ“ฑ UI Components<br/>Pages & Layouts] end subgraph "โ˜๏ธ BACKEND SERVICES" F[๐Ÿ” Clerk Auth Service<br/>User Management & JWT] G[๐Ÿ—„๏ธ Supabase Backend<br/>Database + Storage + Auth] H[๐Ÿค– AI Services<br/>Hugging Face API] end subgraph "๐Ÿ’พ DATABASE LAYER" I[๐Ÿ“Š PostgreSQL Database<br/>Jobs, Companies, Applications] J[๐Ÿ“ File Storage<br/>Resumes & Company Logos] K[๐Ÿ” RLS Policies<br/>Row Level Security] end %% Client Flow E --> B B --> C C --> D %% Authentication Flow A -.->|Sign In/Up| F F -.->|JWT Token| D D -->|Authenticated Requests| G %% Data Flow C -->|CRUD Operations| G G --> I G --> J I --> K %% AI Integration C -.->|Job Matching| H H -.->|AI Recommendations| C %% Styling classDef client fill:#e1f5fe classDef backend fill:#f3e5f5 classDef database fill:#e8f5e8 classDef auth fill:#fff3e0 class A,B,C,E client class F,G,H backend class I,J,K database class D auth 
Loading

Data Flow Diagram

sequenceDiagram participant User as ๐Ÿ‘ค User participant React as โš›๏ธ React App participant Clerk as ๐Ÿ” Clerk Auth participant Hooks as ๐ŸŽฃ Custom Hooks participant API as ๐Ÿ”ง API Layer participant Supabase as ๐Ÿ—„๏ธ Supabase participant DB as ๐Ÿ’พ Database %% Authentication Flow User->>React: Access Protected Route React->>Clerk: Check Authentication Clerk-->>React: Return JWT Token %% Data Fetching Flow React->>Hooks: Trigger Data Fetch Hooks->>Clerk: Get Session Token Clerk-->>Hooks: JWT Token Hooks->>API: Call API Function with Token API->>Supabase: Authenticated Request Supabase->>DB: Query Database DB-->>Supabase: Return Data Supabase-->>API: Response Data API-->>Hooks: Processed Data Hooks-->>React: Update State React-->>User: Display Content %% File Upload Flow (Resume/Logo) User->>React: Upload File React->>API: Upload Request API->>Supabase: Store in Bucket Supabase-->>API: File URL API->>Supabase: Save URL to Database Supabase-->>API: Success Response API-->>React: Upload Complete React-->>User: Show Success 
Loading

Component Communication Flow

graph LR subgraph "๐Ÿ“ฑ User Interface" A[๐Ÿ  Landing Page] B[๐Ÿ“‹ Job Listings] C[๐Ÿ“„ Job Details] D[โž• Post Job] E[๐Ÿ’ผ My Jobs] F[โญ Saved Jobs] end subgraph "๐ŸŽฃ Data Management" G[use-fetch Hook] H[useState/useEffect] end subgraph "๐Ÿ”ง API Integration" I[apiJobs.js] J[apiApplication.js] K[apiCompanies.js] end subgraph "๐Ÿ—„๏ธ Backend" L[Supabase Client] M[Database Tables] N[File Storage] end A --> G B --> G C --> G D --> G E --> G F --> G G --> H G --> I G --> J G --> K I --> L J --> L K --> L L --> M L --> N classDef ui fill:#e3f2fd classDef data fill:#f1f8e9 classDef api fill:#fff8e1 classDef backend fill:#fce4ec class A,B,C,D,E,F ui class G,H data class I,J,K api class L,M,N backend 
Loading

Key Technologies

  • React.js (Vite) for fast development and building
  • Supabase for backend services and database
  • Clerk with JWT for secure authentication
  • Tailwind CSS for styling (clean and responsive UI )
  • Zod for runtime type checking and validation

๐Ÿ”„ Working Features & Data Flow Patterns

1. Authentication Flow

User Login โ†’ Clerk Authentication โ†’ JWT Token โ†’ Supabase RLS โ†’ Database Access 

2. Job Search & Listing

Search Input โ†’ API Filter โ†’ Supabase Query โ†’ Database โ†’ Filtered Results โ†’ UI Display 

3. Job Application Process

Apply Button โ†’ Resume Upload โ†’ File Storage โ†’ Application Record โ†’ Database โ†’ Email Notification 

4. Job Posting (Recruiter)

Job Form โ†’ Validation โ†’ Company Logo Upload โ†’ Job Creation โ†’ Database โ†’ Live Listing 

5. Save/Unsave Jobs

Save Action โ†’ Check Auth โ†’ Toggle Saved State โ†’ Database Update โ†’ UI Refresh 

6. Real-time Features

  • Live Job Updates: Supabase real-time subscriptions
  • Application Status: Real-time status changes
  • New Job Notifications: Instant updates when jobs match criteria

7. File Management

File Upload โ†’ Supabase Storage โ†’ URL Generation โ†’ Database Reference โ†’ Display/Download 

8. Role-based Access Control

graph TD A[User Login] --> B{Role Check} B -->|Candidate| C[Job Search, Apply, Save Jobs] B -->|Recruiter| D[Post Jobs, Manage Applications] B -->|No Role| E[Onboarding Process] E --> F[Select Role] --> B 
Loading

9. Data Validation Flow

Form Input โ†’ Zod Schema โ†’ Client Validation โ†’ API Request โ†’ Server Validation โ†’ Database 

10. Error Handling Pattern

API Request โ†’ Error Check โ†’ User-friendly Message โ†’ Fallback UI โ†’ Retry Mechanism 

โš–๏ธ Trade-offs and Assumptions

Trade-offs

  1. Performance vs. Features

    • Real-time AI analysis may impact response times
    • Caching strategies implemented for optimization
    • Supabase real-time subscriptions for live updates
    • Rate limiting for AI API calls
  2. Scalability

    • Supabase handles database scaling
    • Clerk manages authentication scaling
    • AI service rate limits considered in design
    • Ready for horizontal scaling if needed

Assumptions

  1. User Behavior

    • Users will provide accurate profile information
    • Regular updates to job preferences
    • Secure authentication through Clerk
    • Willing to wait for AI processing
  2. Data Quality

    • Job listings are up-to-date
    • Resume data is in supported formats
    • Data validation through Zod schemas
    • AI model responses are reliable

๐Ÿ“‹ Quick Reference

Key File Locations

ComponentFile PathPurpose
๐Ÿ”ง API Layersrc/api/Supabase integration functions
๐ŸŽฃ Data Hookssrc/hooks/use-fetch.jsCustom data fetching logic
๐Ÿ”Œ Supabase Configsrc/utils/supabase.jsDatabase client setup
๐Ÿšช Routingsrc/App.jsxReact Router configuration
๐Ÿ”’ Auth Guardsrc/components/protected-route.jsxRoute protection logic
๐Ÿ“ฑ Pagessrc/pages/Main application views
๐ŸŽจ Componentssrc/components/Reusable UI elements

Environment Variables

VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key VITE_HUGGINGFACE_API_TOKEN=your_huggingface_token JWT_ISSUER_DOMAIN=your_jwt_issuer_domain

Development Commands

npm install # Install dependencies npm run dev # Start development server npm run build # Build for production npm run preview # Preview production build npm run lint # Run ESLint

Database Schema Overview

๐Ÿ“Š Tables: โ”œโ”€โ”€ users # User profiles and roles โ”œโ”€โ”€ companies # Company information โ”œโ”€โ”€ jobs # Job listings โ”œโ”€โ”€ applications # Job applications โ””โ”€โ”€ saved_jobs # User saved jobs ๐Ÿ—‚๏ธ Storage Buckets: โ”œโ”€โ”€ resumes # PDF resume files โ””โ”€โ”€ company-logo # Company logo images 

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿค Contributing

Contributions are welcome! Please read our contributing guidelines before submitting pull requests.

๐Ÿ“ง Feedback

For support or inquiries, Feedback please reach out to - Here

About

This is a Job site, recruiters can add JOB post, applicants can apply for those jobs with AI assistant.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

    Packages

    No packages published

    Contributors 3

    •  
    •  
    •