UITJobs is a specialized recruitment platform and career hub developed for student candidates and IT recruiters. The platform connects students seeking early-career opportunities with hiring companies through job discovery, application status tracking, real-time notifications, and an interview preparation hub.
- Academic Profile Management: Student account setup with profile fields (Student ID, Major, Cohort) for identity verification.
- Job Discovery & Search: Keyword and filter-based job search supporting position levels, skills, working forms, and locations.
- Personalized Job Recommendations: Skill-based scoring engine surfaces best-fit vacancies from the candidate's profile skills.
- Saved Jobs & Company Following: Bookmark job postings and follow companies to track new openings.
- Application Status Tracking: Centralized dashboard tracking CV submissions through real-time updates (
Initial/Pending,Viewed,Approved,Rejected). - Interview Preparation Hub: Peer-shared interview experiences tagged by company and difficulty, alongside curated study resources and DSA code templates.
- Company Reviews & Salary Trends: 5-axis employer reviews with optional student anonymity and aggregated market salary statistics.
- Job Posting & Rich Editor: Rich-text job creation (TinyMCE) with workplace image uploads, expiration dates, and applicant capacity caps.
- Candidate CV Management: Searchable applicant inbox with direct PDF viewing and status management (
Approved/Rejected). - Recruitment Analytics: Dashboard presenting total views, application counts, approval rates, and performance statistics.
- Role-Based Access Control (RBAC): Permission-based administration protecting core management routes.
- Account & Content Moderation: User account verification, employer approval workflows, content moderation, and action audit logs.
- Frontend: Next.js 16 (App Router, Hybrid SSR/CSR), React 19, Tailwind CSS 4, Recharts, Socket.IO Client, React Hook Form, Zod.
- Backend: Node.js, Express 5, TypeScript, Socket.IO, Nodemailer, Bcryptjs, Joi, Helmet, express-rate-limit.
- Database & Storage: MongoDB Atlas (Mongoose ORM), Atlas Search, Cloudinary CDN.
- Infrastructure: Docker, Docker Compose, Nginx Reverse Proxy.
UITJobs/
├── BE/ # Express REST API (TypeScript)
│ ├── config/ # Environment variables & constants
│ ├── controllers/ # Domain controllers (admin/, candidate/, company/) plus flat controllers (auth, job, search, review, salary, location, interview-experience)
│ ├── helpers/ # Search, mail, socket, cache, cloudinary, audit-log, & mongoose-plugins/
│ ├── interfaces/ # Custom type extensions & interfaces
│ ├── middlewares/ # Auth JWT, RBAC guards, rate limiters, & request logging
│ ├── models/ # 18 Mongoose data schemas & plugins
│ ├── routes/ # API route definitions (admin, auth, candidate, company, job, review, salary, search, location, interview-experience; flat *.route.ts files)
│ ├── validates/ # Joi request payload validation schemas
│ ├── index.ts # Backend server entry point & Socket.IO server
│ └── Dockerfile # Backend container configuration
├── FE/ # Next.js 16 App Router Frontend
│ ├── public/ # Static assets & public files
│ ├── src/
│ │ ├── actions/ # Server actions (revalidation)
│ │ ├── app/ # App router (public: home, job, search, salary-insights, faq; auth dashboards: admin-manage, candidate-manage, company-manage; components)
│ │ ├── configs/ # App variables & configurations
│ │ ├── contexts/ # React contexts (AuthContext, SocketContext, AdminSocketContext)
│ │ ├── hooks/ # Custom React hooks (useAuth, useSocket)
│ │ ├── schemas/ # Zod form validation schemas
│ │ ├── types/ # TypeScript type definitions
│ │ ├── utils/ # Helper utilities (date, currency, API URL)
│ │ └── middleware.ts# Next.js request path header middleware
│ ├── next.config.ts # Next.js build configuration
│ └── Dockerfile # Frontend container configuration
├── Nginx_proxy/ # Nginx reverse proxy configuration
│ ├── nginx.conf # Proxy routing configuration
│ └── Dockerfile # Nginx container configuration
└── docker-compose.yaml # Multi-container orchestration
- Node.js (v20+ for FE, v22+ for BE)
- Yarn or npm
- MongoDB Atlas account
- Cloudinary account
# Clone the repository
git clone https://github.com/thaihadefi/Innovation-Project.git
cd Innovation-Project
# Set up environment variables
cp BE/.env.example BE/.env
cp FE/.env.example FE/.env
# TinyMCE API key is a Docker build-arg, not read from FE/.env — export it in your shell first
export NEXT_PUBLIC_API_TINYMCE="your-tinymce-api-key"
# Start services using Docker Compose
docker compose up --build -d
This project is licensed under the MIT License.