Files
MOHPortal/README.md
2025-10-16 17:04:52 -05:00

7.0 KiB

MysteryApp-Cursor - Recruiter Workflow SAAS

A comprehensive SAAS application for managing recruiter workflows, built with modern technologies and following TDD principles.

Features

Core Functionality

  • User Management: Multi-role authentication system (Admin, Recruiter, Employer, Candidate)
  • Employer Management: Company profiles, job postings, candidate management
  • Candidate Management: Profile creation, resume uploads, application tracking
  • Job Management: Job posting creation, filtering, search capabilities
  • Application Tracking: End-to-end application workflow management
  • Resume Management: File upload, download, and management system

User Roles

  • Admin: Full system access and user management
  • Recruiter: Candidate and employer management, job posting oversight
  • Employer: Job posting creation, candidate review, application management
  • Candidate: Job browsing, application submission, profile management

Technology Stack

Backend

  • Node.js with Express.js
  • PostgreSQL database
  • JWT authentication
  • Multer for file uploads
  • Jest for testing
  • Docker containerization

Frontend

  • React 18 with modern hooks
  • React Router for navigation
  • React Query for data fetching
  • Tailwind CSS for styling
  • Lucide React for icons
  • React Hot Toast for notifications

Infrastructure

  • Docker Compose for orchestration
  • PostgreSQL database
  • File upload handling with proper validation

Getting Started

Prerequisites

  • Docker and Docker Compose
  • Git

Installation

  1. Clone the repository

    git clone <repository-url>
    cd MysteryApp-Cursor
    
  2. Start the application

    docker-compose up --build
    
  3. Initialize the database

    # Run database migrations
    docker-compose exec MysteryApp-Cursor-backend npm run migrate
    
    # Seed the database with sample data
    docker-compose exec MysteryApp-Cursor-backend npm run seed
    
  4. Access the application

Demo Accounts

The application comes with pre-seeded demo accounts:

API Documentation

Authentication Endpoints

  • POST /api/auth/register - User registration
  • POST /api/auth/login - User login
  • GET /api/auth/me - Get current user
  • POST /api/auth/logout - User logout

User Management

  • GET /api/users - List all users (Admin only)
  • GET /api/users/:id - Get user by ID
  • PUT /api/users/:id - Update user profile
  • PUT /api/users/:id/deactivate - Deactivate user (Admin only)

Job Management

  • GET /api/jobs - List jobs with filtering
  • GET /api/jobs/:id - Get job details
  • POST /api/jobs - Create job posting
  • PUT /api/jobs/:id - Update job posting
  • DELETE /api/jobs/:id - Delete job posting

Candidate Management

  • GET /api/candidates - List candidates with filtering
  • GET /api/candidates/:id - Get candidate details
  • POST /api/candidates - Create candidate profile
  • PUT /api/candidates/:id - Update candidate profile

Application Management

  • GET /api/applications - List applications
  • GET /api/applications/:id - Get application details
  • POST /api/applications - Submit application
  • PUT /api/applications/:id/status - Update application status

Resume Management

  • GET /api/resumes/candidate/:candidateId - Get candidate resumes
  • POST /api/resumes/upload - Upload resume
  • GET /api/resumes/:id/download - Download resume
  • PUT /api/resumes/:id/primary - Set primary resume
  • DELETE /api/resumes/:id - Delete resume

Testing

Backend Tests

# Run all tests
docker-compose exec MysteryApp-Cursor-backend npm test

# Run tests in watch mode
docker-compose exec MysteryApp-Cursor-backend npm run test:watch

Frontend Tests

# Run frontend tests
docker-compose exec MysteryApp-Cursor-frontend npm test

Development

Project Structure

MysteryApp-Cursor/
├── backend/
│   ├── src/
│   │   ├── routes/          # API route handlers
│   │   ├── middleware/     # Authentication middleware
│   │   ├── database/       # Database schema and migrations
│   │   ├── tests/          # Backend tests
│   │   └── server.js       # Main server file
│   ├── uploads/            # File upload directory
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   ├── components/     # Reusable React components
│   │   ├── pages/          # Page components
│   │   ├── contexts/       # React contexts
│   │   └── App.js          # Main App component
│   └── Dockerfile
├── docker-compose.yml      # Docker orchestration
└── README.md

Database Schema

The application uses a comprehensive PostgreSQL schema with the following main tables:

  • users - User authentication and basic info
  • employers - Company/employer profiles
  • candidates - Candidate profiles and skills
  • jobs - Job postings with requirements
  • applications - Job applications and status tracking
  • resumes - Resume file management
  • interviews - Interview scheduling and management

Features in Detail

Job Management

  • Advanced filtering by location, salary, experience level, skills
  • Search functionality across job titles and descriptions
  • Remote work support
  • Application deadline management
  • Status tracking (active, paused, closed, draft)

Candidate Management

  • Skills-based filtering and search
  • Experience level categorization
  • Location-based filtering
  • Salary expectation tracking
  • Portfolio and social media links

Application Workflow

  • Multi-stage application process
  • Status tracking (applied, reviewed, shortlisted, interviewed, offered, rejected)
  • Notes and comments system
  • Interview scheduling capabilities

File Management

  • Secure resume upload with validation
  • Multiple file format support (PDF, DOC, DOCX, TXT)
  • File size limits and type validation
  • Primary resume designation
  • Secure download with proper access controls

Security Features

  • JWT-based authentication
  • Role-based access control
  • Password hashing with bcrypt
  • File upload validation
  • SQL injection prevention
  • CORS configuration
  • Helmet.js security headers

Performance Considerations

  • Database indexing for optimal query performance
  • Pagination for large datasets
  • Efficient file handling
  • Optimized React components
  • Proper error handling and logging

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

License

This project is licensed under the MIT License.

Support

For support and questions, please contact the development team or create an issue in the repository.