Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

# πŸš€ Job Tracker API

A **Spring Boot backend application** to track job applications and automate follow-ups using a **scheduler-based reminder system with email notifications**.

---

# 🎯 Project Overview

Job Tracker helps users:

* Track job applications
* Manage application status
* Set reminders for follow-ups & interviews
* Receive automated email notifications

πŸ‘‰ The goal is to make job tracking **structured, automated, and reliable**

---

# 🧩 Features Implemented

## βœ… Stage 1 β€” Job Tracking (Core CRUD)

* Create Job
* Update Job
* Delete Job
* Get Job(s)

---

## βœ… Stage 2 β€” Status Management

* Track job status (APPLIED, INTERVIEW, OFFER, REJECTED)
* Update status dynamically

---

## βœ… Stage 3 β€” Notification API

* Base notification structure
* Extendable for multiple channels

---

## πŸ”₯ Stage 4 β€” Reminder System (USP)

* Create reminders for jobs
* Types:

  * FOLLOW_UP
  * INTERVIEW
* Status:

  * PENDING
  * SENT

### ⏰ Scheduler

* Runs every minute
* Fetches due reminders
* Triggers notification
* Updates status to SENT

---

## πŸ“§ Stage 5 β€” Email Notification (Real-world feature)

* Sends email when reminder is triggered
* Uses **Gmail SMTP**
* Secure authentication via App Password

---

# πŸ—οΈ Tech Stack

* **Java 17**
* **Spring Boot 3**
* **Spring Data JPA**
* **PostgreSQL**
* **Spring Scheduler**
* **Spring Mail (SMTP)**
* **Lombok**
* **Swagger (OpenAPI)**

---

# πŸ“‚ Project Structure

```text
com.jobtracker
β”‚
β”œβ”€β”€ controller     # REST APIs
β”œβ”€β”€ service        # Business logic
β”œβ”€β”€ repository     # Database layer
β”œβ”€β”€ entity         # JPA entities
β”œβ”€β”€ dto            # Request/Response objects
β”œβ”€β”€ scheduler      # Background jobs
β”œβ”€β”€ config         # Configurations (mail, etc.)
β”œβ”€β”€ scheduler      # automate jobs(reminder,email etc.)


```

---

# βš™οΈ Setup & Run

## 1️⃣ Clone Repo

```bash
git clone https://github.com/Yaamin1921/job-tracker.git
cd job-tracker
```

---

## 2️⃣ Configure Database

Update `application.yml`:

```yaml
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/job_tracker
    username: your_username
    password: your_password
```

---

## 3️⃣ Configure Email (SMTP)

```yaml
spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: your-email@gmail.com
    password: your-app-password
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
```

---

## 4️⃣ Run Application

```bash
mvn spring-boot:run
```

---

## 5️⃣ Swagger UI

```text
http://localhost:8080/swagger-ui/index.html
```

---

# πŸ§ͺ Sample API (Create Reminder)

```json
{
  "jobId": 101,
  "reminderTime": "2026-04-10T17:45:54Z",
  "type": "FOLLOW_UP",
  "email": "your-email@gmail.com"
}
```

---

# πŸ”„ Reminder Flow

```text
User creates reminder
        ↓
Stored as PENDING
        ↓
Scheduler runs every minute
        ↓
Due reminder found
        ↓
Email sent
        ↓
Status updated to SENT
```

---

# πŸ’‘ Key Highlights

* ⏰ Scheduler-based automation
* πŸ“§ Real email notifications
* 🧠 Clean architecture (Controller β†’ Service β†’ Repo)
* πŸ” Secure email via App Password
* πŸ“¦ DTO-based request handling
* πŸ“Š Production-ready design

---

# πŸš€ Future Enhancements

* Email templates (HTML)
* Retry mechanism for failed emails
* SMS / WhatsApp notifications
* User authentication (JWT)
* Dashboard & analytics
* Kafka for scalable notifications

---

# 🧠 Learning Outcomes

* Scheduler in Spring Boot
* Email integration using SMTP
* DTO vs Entity best practices
* Enum handling in APIs
* Timezone handling (UTC vs IST)
* Clean architecture design

---

# πŸ‘¨β€πŸ’» Author

**Mohd Yaamin**

---

# ⭐ Contribution

Feel free to fork, raise issues, or contribute!

---

# πŸ”₯ Interview One-Liner

> Built a scheduler-driven job tracking system with automated email reminders to prevent missed follow-ups.

---

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages