Overall, this project demonstrates strong design, organization, and technical execution. The JobTrack app feels cohesive and user-friendly, with clear routing, responsive components, and clean data flow between the frontend and backend. The use of React Bootstrap and modern UI patterns makes the interface approachable and professional. The codebase is well structured, with consistent naming and readable logic that reflects good development practices. Future improvements could focus on adding stronger form validation, centralizing authentication through context or hooks, and enhancing error handling for a smoother user experience. Additionally, implementing pagination, input sanitization, and lazy loading could improve performance and scalability. Overall, this is a well-implemented and thoughtfully designed project that shows real attention to detail and usability. Good job! :)
A comprehensive full-stack web application designed for job seekers to track applications and prepare for interviews.
Authors: Zoya, Arvind
Course: CS5610 Web Development - Northeastern University
Course Link: CS5610 Web Development
Semester: Fall 2025
JobTrack is a two-part platform that combines personal job application management with a public interview preparation hub. The application enables job seekers to:
- Private Dashboard: Track all job applications with company, role, status (Applied β Interview β Offer), dates, and notes
- Public Q&A Hub: Browse and share anonymous interview questions tagged by company and role
- AI Mock Answers: Generate AI-powered sample answers to practice interview responses
- Search & Filter: Find relevant interview questions by company, role, or keywords
This project demonstrates modern full-stack development using the MERN stack (MongoDB, Express, React, Node.js) with JWT authentication, RESTful API design, and client-side rendering with React hooks.
- Secure user registration with password hashing (bcrypt)
- JWT-based authentication and session management
- Protected routes and API endpoints
- User profile management with update capabilities
- Change password with current password verification
- Email and username uniqueness validation
- Full CRUD Operations: Create, read, update, and delete job applications
- Status Tracking: Monitor progress from "Applied" β "Interview" β "Offer" β "Rejected"
- Rich Details: Store company, role, submission date, application URL, and personal notes
- User-Specific Data: Each user sees only their own applications
- Responsive Dashboard: Clean table view with action buttons and modals
- Anonymous Submissions: Share interview questions without revealing identity
- Company & Role Tags: Organize questions by employer and position
- Search & Filter: Find questions by company, role, or keyword
- Community Knowledge Base: Learn from real interview experiences
Track all your job applications in one organized view
Update application status and add detailed notes
Browse community-submitted interview questions
Backend:
- Node.js
- Express.js v5.1.0
- MongoDB v6.20.0 (native driver, no Mongoose)
- JWT (jsonwebtoken) for authentication
- bcrypt for password hashing
- dotenv for environment variables
Frontend:
- React v19.1.1 with Hooks
- React Router DOM v7.9.5 for routing
- React Bootstrap v2.10.10 for UI components
- React Icons v5.5.0 for icon library
- Vite v7.1.7 for build tooling
- Native Fetch API (no Axios)
Development Tools:
- ESLint v9.36.0 for code quality
- Prettier for code formatting
- Nodemon for development hot-reload
- pnpm for package management
- Node.js (v18 or higher)
- MongoDB (local installation or MongoDB Atlas account)
- pnpm (recommended) or npm
git clone https://github.com/ArvindParekh/jobtrack/
cd jobtrackpnpm installcd frontend
pnpm installCreate a .env file in the root directory:
MONGO_URI=mongodb://localhost:27017/jobtrack
# or for MongoDB Atlas:
# MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/jobtrack
JWT_SECRET=your_secret_key_here_replace_with_random_stringcd frontend
pnpm run buildpnpm dev
# or for production:
# node server.jsThe server will start on http://localhost:3000
Open your browser and navigate to:
http://localhost:5173
You'll be redirected to the login page. Create an account to get started!
Project 3 - JobTrack/
βββ controllers/ # Business logic
β βββ authController.js # Authentication logic (Arvind)
β βββ applicationsController.js # Application CRUD (Arvind)
βββ middlewares/ # Express middleware
β βββ authMiddleware.js # JWT token verification
βββ routes/ # API routes
β βββ authRoutes.js # Auth endpoints
β βββ applicationRoutes.js # Application endpoints
βββ frontend/ # React application
β βββ src/
β β βββ components/ # React components
β β β βββ Navbar.jsx # Navigation bar
β β βββ pages/ # Page components
β β β βββ Login.jsx # Login page
β β β βββ Register.jsx # Registration page
β β β βββ Dashboard.jsx # Application list
β β β βββ ApplicationDetail.jsx # Edit application
β β β βββ Profile.jsx # User profile settings
β β βββ api.js # API client functions
β β βββ App.jsx # Main app component
β β βββ main.jsx # React entry point
β βββ dist/ # Production build
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite configuration
βββ docs/ # Documentation & design
β βββ design-document.md # Full project design doc
β βββ screenshots/ # Application screenshots
βββ server.js # Express server setup
βββ package.json # Backend dependencies
βββ eslint.config.js # ESLint configuration
βββ .prettierrc # Prettier configuration
βββ LICENSE # MIT License
βββ README.md # This file
POST /api/auth/register- Register new userPOST /api/auth/login- Login and receive JWT tokenGET /api/auth/me- Get current user profile (protected)PUT /api/auth/me- Update user profile (protected)PUT /api/auth/me/password- Change password (protected)
All application endpoints require authentication via JWT token in Authorization: Bearer <token> header.
GET /api/applications- Get all applications for authenticated userGET /api/applications/:id- Get specific application by IDPOST /api/applications- Create new applicationPUT /api/applications/:id- Update application (including status)DELETE /api/applications/:id- Delete application
Coming soon: Public question endpoints and AI answer generation
{
_id: ObjectId,
firstName: String,
lastName: String,
username: String, // Unique
email: String, // Unique
password: String, // Hashed with bcrypt
createdAt: Number // Timestamp
}{
_id: ObjectId,
userId: String, // References user
company: String,
role: String,
status: String, // "applied", "interview", "offer", "rejected"
submittedAt: Number, // Timestamp
url: String, // Optional application URL
notes: String, // Optional notes
createdAt: Number, // Timestamp
updateAt: Number // Timestamp
}Coming soon: Interview questions schema
All code is formatted using Prettier. Run:
pnpm exec prettier --write .ESLint is configured for both backend and frontend:
# Frontend
cd frontend && pnpm run lint- β Authentication and profile management
- β Full CRUD operations for applications collection
- β Private dashboard interface (Dashboard, ApplicationDetail pages)
- β JWT middleware and protected routes
- β Backend API for applications
- β Full CRUD operations for questions collection
- β Public interview hub interface
- β Search and filter functionality
- β AI-powered mock answer feature
- β Database seeding with 1,000+ synthetic questions
This project fulfills the requirements for CS5610 Web Development Project 3:
- β React with hooks (5 components in separate files)
- β Node.js + Express backend
- β MongoDB with native driver (no Mongoose)
- β At least 2 MongoDB collections with full CRUD
- β User authentication and session management
- β Client-side rendering with AJAX (Fetch API)
- β ESLint configuration with no errors
- β Prettier code formatting
- β PropTypes for all React components
- β MIT License
- β Proper code organization
- β No prohibited libraries (axios, mongoose, cors)
- β Environment variables for credentials
- β Separate package.json for frontend and backend
This is an academic project. For suggestions or issues, please contact the authors.
MIT License
Copyright (c) 2025 Zoya, Arvind
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Zoya
Northeastern University
Email: arief.z@northeastern.edu
Arvind
Northeastern University
Email: parekh.arv@northeastern.edu
This project utilized generative AI tools to assist with documentation and content generation:
- Claude 3.5 Sonnet (Latest version)
- Claude 4.5 Haiku (for specific code review tasks)
README.md Generation
- Prompt: "Create a comprehensive README following the structure of a professional MERN stack project"
- Purpose: Generate well-structured documentation including installation steps, API endpoints, tech stack details, and project overview
- Output: Professional README with clear sections, instructions, and technical details
Design Document Creation
- Prompt: "Write a detailed design document with user personas, user stories, and feature specifications for a job tracking application"
- Purpose: Develop comprehensive project specification with acceptance criteria and implementation details
- Output: Complete design document with personas, user stories, and technical requirements
- Content generation for documentation structure and technical descriptions
- Assistance with organizing information logically and clearly
- Proofreading and refinement of technical explanations
- Consistent tone and professional presentation across documents
- Bootstrap and React Bootstrap for UI components
- React Icons for iconography
- Vite for lightning-fast development experience
- MongoDB for database solution
- Northeastern University CS5610 course staff and Professor John Alexis Guerra Gomez
- Claude AI models for documentation assistance
Live Demo: [Coming Soon]
Video Demo: [Coming Soon]
Design Document: View Full Design Doc