This is a full-stack web application that allows users to track their job applications. It features user authentication, secure storage of user data, and a clean and responsive frontend built with React. The backend uses Node.js and Express to interact with a PostgreSQL database, and the project is fully containerized with Docker.
- Sign-Up: Register with a username, email, and password.
- Login: Authenticate using email and password.
- JWT-Based Authentication: Secure API routes with JSON Web Tokens (JWT).
- Add Job Applications: Add job details such as title, company, salary, date applied, status, and interview stage.
- View Job Applications: Retrieve and display job applications specific to the logged-in user.
- Frontend: React with Tailwind CSS.
- Backend: Node.js, Express, PostgreSQL.
- Authentication: JWT with bcrypt for password hashing.
- Containerization: Docker for consistent deployment.
- Install Docker.
- Clone the repository:
git clone https://github.com/your-username/job-application-tracker.git cd job-application-tracker
- Ensure your
.env
file contains the following:PORT=5000 PG_USER=your_postgres_username PG_PASSWORD=your_postgres_password PG_HOST=your_postgres_host PG_PORT=5432 PG_DATABASE=your_database_name JWT_SECRET=your_jwt_secret
Build the Docker image:
docker build -t job-tracker .
Run the Docker container:
docker run -d -p 5000:5000 --name job-tracker job-tracker
Run the following SQL commands to create the necessary tables:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE job_applications (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id) ON DELETE CASCADE,
job_title VARCHAR(255) NOT NULL,
company VARCHAR(255) NOT NULL,
salary DECIMAL(10, 2),
date_applied DATE,
status VARCHAR(50),
interview_stage VARCHAR(100)
);
- Ensure Docker is running.
- Run the container as described in the setup.
- Access the application at
http://localhost:3000
.
If you encounter errors like Module not found
, ensure the dependencies are installed inside the Docker container. Rebuild the container after updating <
69CF
code>package.json:
docker build -t job-tracker .
To confirm installed modules:
docker exec -it job-tracker sh
cd /app
ls node_modules
If changes are made to the code or Dockerfile
, rebuild the image:
docker build -t job-tracker .
This project is licensed under the MIT License. See the LICENSE
file for more details.