Skip to content
Β 
Β 

Repository files navigation

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! :)

JobTrack - Personal Job Application Tracker

A comprehensive full-stack web application designed for job seekers to track applications and prepare for interviews.

JobTrack Dashboard

πŸ“‹ Project Information

Authors: Zoya, Arvind
Course: CS5610 Web Development - Northeastern University
Course Link: CS5610 Web Development
Semester: Fall 2025

🎯 Project Objective

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.

✨ Features

Authentication & User Management (Arvind)

  • 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

Private Application Tracker (Arvind)

  • 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

Public Interview Questions Hub (Zoya)

  • 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

πŸ“Έ Screenshots

Dashboard

Application Dashboard Track all your job applications in one organized view

Application Detail

Edit Application Update application status and add detailed notes

Interview Questions Hub

Questions Hub Browse community-submitted interview questions

πŸ› οΈ Tech Stack

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

πŸ“¦ Installation & Setup

Prerequisites

  • Node.js (v18 or higher)
  • MongoDB (local installation or MongoDB Atlas account)
  • pnpm (recommended) or npm

Step 1: Clone the Repository

git clone https://github.com/ArvindParekh/jobtrack/
cd jobtrack

Step 2: Install Backend Dependencies

pnpm install

Step 3: Install Frontend Dependencies

cd frontend
pnpm install

Step 4: Environment Configuration

Create 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_string

Step 5: Build the Frontend

cd frontend
pnpm run build

Step 6: Start the Server

pnpm dev
# or for production:
# node server.js

The server will start on http://localhost:3000

Step 7: Access the Application

Open your browser and navigate to:

http://localhost:5173

You'll be redirected to the login page. Create an account to get started!

πŸ“ Project Structure

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

πŸ”Œ API Endpoints

Authentication (Arvind)

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login and receive JWT token
  • GET /api/auth/me - Get current user profile (protected)
  • PUT /api/auth/me - Update user profile (protected)
  • PUT /api/auth/me/password - Change password (protected)

Applications (Arvind)

All application endpoints require authentication via JWT token in Authorization: Bearer <token> header.

  • GET /api/applications - Get all applications for authenticated user
  • GET /api/applications/:id - Get specific application by ID
  • POST /api/applications - Create new application
  • PUT /api/applications/:id - Update application (including status)
  • DELETE /api/applications/:id - Delete application

Interview Questions (Zoya)

Coming soon: Public question endpoints and AI answer generation

πŸ’Ύ Database Schema

Users Collection

{
  _id: ObjectId,
  firstName: String,
  lastName: String,
  username: String,        // Unique
  email: String,           // Unique
  password: String,        // Hashed with bcrypt
  createdAt: Number        // Timestamp
}

Applications Collection

{
  _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
}

Questions Collection (Zoya)

Coming soon: Interview questions schema

πŸ“ Development Guidelines

Code Formatting

All code is formatted using Prettier. Run:

pnpm exec prettier --write .

Linting

ESLint is configured for both backend and frontend:

# Frontend
cd frontend && pnpm run lint

πŸ‘₯ Team Responsibilities

Arvind

  • βœ… 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

Zoya

  • βœ… 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

πŸŽ“ Academic Context

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

🀝 Contributing

This is an academic project. For suggestions or issues, please contact the authors.

πŸ“„ License

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.

πŸ“§ Contact

Zoya
Northeastern University
Email: arief.z@northeastern.edu

Arvind
Northeastern University
Email: parekh.arv@northeastern.edu

πŸ€– GenAI Usage

This project utilized generative AI tools to assist with documentation and content generation:

Models & Tools Used

  • Claude 3.5 Sonnet (Latest version)
  • Claude 4.5 Haiku (for specific code review tasks)

Use Cases & Prompts

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

How AI Was Utilized

  • 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

πŸ™ Acknowledgments

  • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages