Skip to content

thxgp/applytrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ApplyTrack - Job Application Tracking System

A cloud-based personal ATS (Applicant Tracking System) for students and early professionals to track job applications, manage resumes, and monitor application statuses.

Features

  • 🔐 Secure Authentication - JWT-based auth with bcrypt password hashing
  • 📝 Application Tracking - CRUD operations with status workflow
  • 📄 Resume Management - PDF upload/download with version control
  • 📊 Status History - Complete audit trail of status changes
  • 🔍 Search & Filter - Pagination, status filtering, sorting

Tech Stack

  • Backend: Python 3.11+ / Flask
  • Database: SQLite (dev) / MySQL (production)
  • ORM: SQLAlchemy
  • Auth: JWT (PyJWT)
  • File Storage: Local (dev) / AWS S3 (production)

Quick Start

1. Clone and Setup

cd C:\Users\thegp\.gemini\antigravity\scratch\applytrack

# Create virtual environment
python -m venv venv
venv\Scripts\activate  # Windows

# Install dependencies
pip install -r requirements.txt

2. Configure Environment

# Copy example env file
copy .env.example .env

# Edit .env with your secret keys

3. Initialize Database

# Create database tables
python -c "from app import create_app, db; app = create_app(); app.app_context().push(); db.create_all(); print('Database created!')"

4. Run the Server

python run.py

Server runs at: http://localhost:5000

API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/register Register new user
POST /api/auth/login Login, get JWT token
POST /api/auth/logout Logout
GET /api/auth/me Get current user

Applications

Method Endpoint Description
POST /api/applications Create application
GET /api/applications List (with pagination)
GET /api/applications/:id Get single
PUT /api/applications/:id Update
DELETE /api/applications/:id Delete
PUT /api/applications/:id/status Update status
GET /api/applications/:id/history Status history
POST /api/applications/:id/attach-resume Attach resume

Resumes

Method Endpoint Description
POST /api/resumes/upload Upload PDF
GET /api/resumes List all
GET /api/resumes/:id Get metadata
GET /api/resumes/:id/download Get download URL
DELETE /api/resumes/:id Delete

Testing with cURL

# Register
curl -X POST http://localhost:5000/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"Test@123","fullName":"Test User"}'

# Login
curl -X POST http://localhost:5000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"Test@123"}'

# Create Application (use token from login)
curl -X POST http://localhost:5000/api/applications \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"companyName":"Google","position":"SWE Intern","appliedDate":"2025-01-07"}'

Project Structure

applytrack/
├── app/
│   ├── __init__.py          # Flask app factory
│   ├── config.py             # Configuration
│   ├── models/               # Database models
│   ├── routes/               # API endpoints
│   ├── services/             # Business logic
│   └── utils/                # Helpers
├── uploads/                  # Resume storage (local)
├── requirements.txt
├── run.py                    # Entry point
└── README.md

Next Steps (AWS Deployment)

  • Phase 2: Migrate to AWS RDS MySQL
  • Phase 3: Deploy to EC2
  • Phase 4: Integrate AWS S3
  • Phase 5: CloudWatch monitoring
  • Phase 6: Security hardening

License

MIT

About

Job application tracker REST API with JWT authentication, built with Flask and SQLAlchemy

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages