7.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			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
- 
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 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
- 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.