039d51c4e501ab7e1e07e203d9a4aa765a4bb6be
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
-
Clone the repository
git clone <repository-url> cd MysteryApp-Cursor -
Start the application
docker-compose up --build -
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 -
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Database: localhost:5432
Demo Accounts
The application comes with pre-seeded demo accounts:
- Admin: admin@mysteryapp.com / admin123
- Recruiter: recruiter@mysteryapp.com / recruiter123
- Employer: employer@techcorp.com / employer123
- Candidate: candidate@example.com / candidate123
API Documentation
Authentication Endpoints
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current userPOST /api/auth/logout- User logout
User Management
GET /api/users- List all users (Admin only)GET /api/users/:id- Get user by IDPUT /api/users/:id- Update user profilePUT /api/users/:id/deactivate- Deactivate user (Admin only)
Job Management
GET /api/jobs- List jobs with filteringGET /api/jobs/:id- Get job detailsPOST /api/jobs- Create job postingPUT /api/jobs/:id- Update job postingDELETE /api/jobs/:id- Delete job posting
Candidate Management
GET /api/candidates- List candidates with filteringGET /api/candidates/:id- Get candidate detailsPOST /api/candidates- Create candidate profilePUT /api/candidates/:id- Update candidate profile
Application Management
GET /api/applications- List applicationsGET /api/applications/:id- Get application detailsPOST /api/applications- Submit applicationPUT /api/applications/:id/status- Update application status
Resume Management
GET /api/resumes/candidate/:candidateId- Get candidate resumesPOST /api/resumes/upload- Upload resumeGET /api/resumes/:id/download- Download resumePUT /api/resumes/:id/primary- Set primary resumeDELETE /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 infoemployers- Company/employer profilescandidates- Candidate profiles and skillsjobs- Job postings with requirementsapplications- Job applications and status trackingresumes- Resume file managementinterviews- 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
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- 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.
Description
Languages
JavaScript
95.4%
PLpgSQL
2.6%
Shell
0.9%
Dockerfile
0.4%
CSS
0.4%
Other
0.3%