Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
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. ---