Skip to content

hadileee/cs324-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UniMatch - Career Opportunities Platform

🎯 Project Overview

UniMatch is a comprehensive platform connecting students, universities, and companies for career opportunities including internships, research positions, and graduate jobs.

πŸ—οΈ Architecture

This is a full-stack MERN application:

  • Frontend: React 19.2.0 with React Router
  • Backend: Node.js + Express
  • Database: MongoDB
  • API: RESTful with JWT authentication

πŸ“‹ Features

For Students

  • Browse internships, research roles, and graduate jobs
  • Create and manage profiles
  • Apply for opportunities
  • Track application status

For Universities

  • Post research opportunities
  • Manage student applications
  • Review applicant profiles

For Companies

  • Post internship and job opportunities
  • Review student applications
  • Connect with talent

πŸ› οΈ Tech Stack

Frontend

  • React 19.2.0
  • React Router 7.9.4
  • Axios 1.12.2
  • Bootstrap 5.3.3
  • Framer Motion 12.23.24
  • Lucide React (icons)

Backend

  • Node.js + Express 4.18.2
  • MongoDB + Mongoose 7.5.0
  • JWT Authentication 9.0.2
  • bcryptjs 2.4.3
  • CORS enabled

πŸ“ Project Structure

cs324-project/
β”œβ”€β”€ frontend/                    # React app
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   β”œβ”€β”€ pages/              # Page components
β”‚   β”‚   β”œβ”€β”€ components/         # Reusable components
β”‚   β”‚   └── services/           # API calls (Axios)
β”‚   β”œβ”€β”€ public/
β”‚   └── package.json
β”œβ”€β”€ backend/                     # Node.js/Express server
β”‚   β”œβ”€β”€ server.js
β”‚   β”œβ”€β”€ config/                 # Database config
β”‚   β”œβ”€β”€ models/                 # Mongoose schemas
β”‚   β”œβ”€β”€ controllers/            # Business logic
β”‚   β”œβ”€β”€ routes/                 # API endpoints
β”‚   β”œβ”€β”€ middleware/             # Auth, errors
β”‚   β”œβ”€β”€ .env                    # Configuration
β”‚   └── package.json
β”œβ”€β”€ IMPLEMENTATION_SUMMARY.md   # What's been built
β”œβ”€β”€ BACKEND_SETUP.md           # Backend setup guide
β”œβ”€β”€ QUICK_START.md             # Quick reference
└── README.md                  # This file

πŸš€ Quick Start

Prerequisites

  • Node.js (v14+)
  • npm or yarn
  • MongoDB Atlas account (free at mongodb.com)

1. Frontend Setup

cd /path/to/cs324-project
npm install
npm start

Frontend runs on http://localhost:3000

2. Backend Setup

cd backend
npm install

Configure .env:

MONGODB_URI=mongodb+srv://username:password@cluster...
PORT=5001
JWT_SECRET=your_secret_key
FRONTEND_URL=http://localhost:3000

Start backend:

npm start

Backend runs on http://localhost:5001

πŸ“š Documentation

  • IMPLEMENTATION_SUMMARY.md - Complete overview of what's been built
  • BACKEND_SETUP.md - Detailed backend setup and configuration
  • QUICK_START.md - Quick reference guide
  • backend/API_DOCUMENTATION.md - Complete API reference

πŸ”‘ API Endpoints

Authentication

  • POST /api/auth/register - Register user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user

Users

  • GET /api/users/:id - Get user profile
  • PATCH /api/users/profile/update - Update profile

Opportunities

  • GET /api/opportunities - Get all opportunities
  • POST /api/opportunities - Create opportunity
  • GET /api/opportunities/:id - Get opportunity details
  • PATCH /api/opportunities/:id - Update opportunity
  • DELETE /api/opportunities/:id - Delete opportunity

Applications

  • POST /api/applications - Submit application
  • GET /api/applications/student/applications - Get my applications
  • PATCH /api/applications/:id/status - Update application status
  • PATCH /api/applications/:id/withdraw - Withdraw application

See backend/API_DOCUMENTATION.md for complete endpoint details.

πŸ” Authentication

  • JWT-based authentication
  • Password hashing with bcryptjs
  • Token-based authorization
  • Role-based access control (student, university, company, admin)

πŸ“¦ Database Schema

User

  • Email, password, first/last name
  • Role (student, university, company, admin)
  • Profile info (bio, location, skills, etc.)
  • Role-specific data

Opportunity

  • Title, description, type (internship, research, etc.)
  • Location, salary, duration
  • Requirements, qualifications, skills
  • Application tracking

Application

  • Student, opportunity reference
  • Status (pending, reviewed, accepted, rejected, withdrawn)
  • Cover letter, feedback

πŸ§ͺ Testing API

Use Postman to test endpoints:

  1. Import endpoints from API_DOCUMENTATION.md
  2. Set base URL: http://localhost:5001/api
  3. Register and login to get JWT token
  4. Use token in Authorization header for protected routes

Example cURL:

# Register
curl -X POST http://localhost:5001/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"firstName":"John","lastName":"Doe","email":"john@test.com","password":"pass123","role":"student"}'

# Login
curl -X POST http://localhost:5001/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"john@test.com","password":"pass123"}'

🎨 Features to Implement

Frontend Pages

  • Home page with role selection
  • Login page
  • Signup page
  • Student portal (browse opportunities, apply)
  • University portal (post opportunities, view applications)
  • Company portal (post opportunities, view applications)
  • User profile page
  • Application tracking page

Backend Completion

  • Database models
  • Authentication system
  • CRUD operations
  • Error handling
  • CORS configuration
  • Email notifications
  • Search/filter optimization
  • Rate limiting

πŸ”„ Frontend Integration

Use Axios to connect to backend:

import axios from 'axios';

const api = axios.create({ baseURL: 'http://localhost:5001/api' });

api.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (token) config.headers.Authorization = `Bearer ${token}`;
  return config;
});

πŸ“ Environment Variables

Frontend (.env)

REACT_APP_API_URL=http://localhost:5001/api

Backend (.env)

MONGODB_URI=mongodb+srv://...
PORT=5001
JWT_SECRET=your_secret_key
FRONTEND_URL=http://localhost:3000
NODE_ENV=development
JWT_EXPIRE=7d

πŸ› Troubleshooting

Backend won't start

  • Check MongoDB URI is correct
  • Ensure port 5001 is available
  • Check .env file exists and is configured

Frontend can't reach backend

  • Ensure backend is running on port 5001
  • Check CORS is enabled
  • Verify API URLs in frontend

MongoDB connection error

  • Verify connection string in .env
  • Check IP whitelist in MongoDB Atlas
  • Ensure username/password are correct

πŸ“ˆ Next Steps

  1. βœ… Setup MongoDB Atlas
  2. βœ… Configure backend .env
  3. βœ… Test backend API with Postman
  4. Build frontend pages
  5. Integrate frontend with backend APIs
  6. Add email notifications
  7. Deploy to production

πŸ‘₯ User Roles

  • Student: Can view and apply for opportunities
  • University: Can post opportunities and manage applications
  • Company: Can post opportunities and manage applications
  • Admin: Full system access

πŸ“ž Support

For issues or questions, refer to:

  • BACKEND_SETUP.md - Backend setup help
  • API_DOCUMENTATION.md - API details
  • QUICK_START.md - Quick reference

πŸ“„ License

ISC


Status: Backend complete, ready for frontend integration Last Updated: November 27, 2025 Version: 1.0.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors