- Overview
- Tech Stack
- Features
- Project Structure
- Setup & Installation
- Usage & Flow
- API Endpoints
- Screnshots
- Contributing
InternHQ is a full-stack internship management platform built with the MEVN stack (MongoDB, Express.js, Vue.js, Node.js). It allows admins to create and assign tasks to interns, track submissions, evaluate performance, and view analytics and leaderboards. Interns can view, submit, and edit their assignments, as well as track their progress and feedback.
- Frontend: Vue.js 2, Vuetify, Vue Router, Vuex, Chart.js, Vue-Toastification
- Backend: Node.js, Express.js, MongoDB (Mongoose)
- Authentication: JWT (JSON Web Tokens)
- Other: Axios, CORS, dotenv, nodemon
- Register/login as admin
- Create and assign tasks to all interns
- View all tasks and their assignments
- Evaluate intern submissions (feedback & star rating)
- View analytics (charts for completion, scores, activity)
- Manage interns (view, delete)
- View leaderboard
- Register/login as intern
- View assigned tasks
- Submit and edit task submissions (GitHub link)
- View feedback and ratings from admin
- Track task status (pending, submitted, evaluated)
- View personal performance and leaderboard
Apexa Project/
├── backend/ # Express backend (API, DB, Auth)
│ └── routes/
│ └── middleware/
│ └── models/
│ └── db.js
│ └── index.js
| └── package-lock.json
| └── package.json
├── frontend/ # Vue+Vuetify frontend
| ├── public/
| ├── src/
│ └── components/
| └── assets/
| └── plugins/
| └── router/
| └── store/
| └── views/
| └── App.vue
| └── mian.js
│ ├── .gitignore
│ ├── babel.config.js
│ ├── jsconfig.json
│ ├── package-lock.json
│ ├── package.json
│ ├── README.md
│ ├── vue.config.js
├── .gitignore
├── package.json
├── package-lock.json
└── README.md
- Node.js & npm
- MongoDB
git clone <repo-url>
cd Apexa Projectcd backend
npm installcd ../frontend
npm install- Make sure MongoDB is running locally on mongodb://localhost:27017/apexa-project
- From the root directory:
# Start both frontend and backend concurrently
npm run both- Or run separately:
# In one terminal
npm run backend
# In another terminal
npm run serve- Frontend: http://localhost:8080
- Backend API: http://localhost:5000
- Admin and Interns can register and log in.
- Role is determined by the isAdmin flag.
- Login as admin.
- Create new tasks (auto-assigned to all interns).
- View all tasks, assignments, and intern list.
- Evaluate submissions (feedback & stars).
- View analytics and leaderboard.
- Manage interns (delete if needed).
- Login as intern.
- View assigned tasks.
- Submit GitHub link for each task.
- View feedback and ratings after evaluation.
- Edit submission after evaluation if needed.
- Track performance and view leaderboard.
POST /api/auth/createuser– Register (admin/intern)POST /api/auth/login– LoginGET /api/auth/getuser– Get logged-in user detailsDELETE /api/auth/admin/interns/:internId– Delete intern (admin only)
POST /api/tasks– Create task (admin)GET /api/tasks/admin– Get all tasks (admin)GET /api/tasks/assigned– Get assigned tasks (intern)PUT /api/tasks/submit/:taskId– Submit/edit task (intern)PUT /api/tasks/evaluate/:assignmentId– Evaluate task (admin)GET /api/tasks/:taskId/submissions– Get submissions for a task (admin)GET /api/tasks/admin/interns– Get all interns with stats (admin)GET /api/tasks/performance– Get intern's average stars (intern)DELETE /api/tasks/:taskId– Delete task (admin)GET /api/tasks/leaderboard– Get leaderboard
I welcome contributions! To raise a Pull Request (PR):
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Commit your changes with clear messages.
- Push to your fork and submit a Pull Request.
- Please describe your changes and reference any related issues.
For major changes, please open an issue first to discuss what you would like to change.




