This project is a Job Application Tracker, designed to help users stay organized during their job search. Users can register, log in, and manage detailed records of each job application — including company name, job role, salary, application link, resume/CV sent, cover letter, interview dates, notes, and more.
Built with a modern stack using Express.js, PostgreSQL (via Prisma), and JWT authentication.
🧑🤝🧑 This project was developed as a group project with contributions from @khantm02, @hitomipupil, @edinssa, @stefan-000, and @PolyannaMeira, as part of the final assessment for the Full Stack Developer course at Hack Your Future Belgium.
- User registration and login
- JWT-based authentication
- CRUD operations for job applications
- Password change and profile update functionality
- Calendar agenda for upcoming interviews
- Responsive UI for job management and scheduling
- Backend: Node.js, Express.js
- Database: PostgreSQL (via Prisma ORM)
- Authentication: JWT
- Frontend: React (in separate repository)
git clone https://github.com/PolyannaMeira/Job-Application-Tracker-Be.git
cd job-application-trackernpm installCreate a .env file in the root and set the following:
PORT=5000
DATABASE_URL=your_postgresql_connection_string
JWT_SECRET=your_jwt_secretnpx prisma migrate dev --name init
npx prisma generatenpm run dev├── controllers/ # Route handlers (user, jobs)
├── middleware/ # Token verification middleware
├── prisma/ # Prisma schema and migrations
├── routes/ # Express route definitions
├── utils/ # Helper functions (password hashing, validation)
├── .env # Environment variables
├── index.js # Entry point of the server
└── package.json # Project metadata and dependencies
POST /users/register– Register a new userPOST /users/login– Authenticate and receive JWTPOST /users/logout– Logout user
GET /users/profile– Fetch authenticated user's profilePUT /users/update– Update profile detailsPUT /users/change-password– Change password (requires current password)
GET /jobs/jobs– Fetch all jobs for the authenticated userGET /job/:id– Get a specific job by IDPOST /jobs/job– Create a new job entryPUT /job/:id– Update a jobDELETE /job/:id– Delete a jobGET /jobs/search?query=– Search jobs by keyword
The app includes a calendar that highlights interview dates and displays upcoming interviews per month, enhancing user organization during their job search.
- JWT tokens are used for protected routes.
- Passwords are securely hashed using bcrypt.
- Auth tokens are stored client-side and attached to requests via headers.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
This project is open-source and available under the MIT License.