Initial commit
This commit is contained in:
		
							
								
								
									
										241
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,241 @@ | ||||
| # 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** | ||||
|    ```bash | ||||
|    git clone <repository-url> | ||||
|    cd MysteryApp-Cursor | ||||
|    ``` | ||||
|  | ||||
| 2. **Start the application** | ||||
|    ```bash | ||||
|    docker-compose up --build | ||||
|    ``` | ||||
|  | ||||
| 3. **Initialize the database** | ||||
|    ```bash | ||||
|    # 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** | ||||
|    - 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 | ||||
| ```bash | ||||
| # 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 | ||||
| ```bash | ||||
| # 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. | ||||
		Reference in New Issue
	
	Block a user