Skip to content

Rajkumar2806/trackapply

Repository files navigation

TrackApply - Job Application Tracker

TrackApply is a practical solution for tracking job applications with resume version locking, job description snapshots, and follow-up management.

Features

  • Resume Version Locking: Immutable snapshots of which resume was used for each application
  • Job Description Snapshots: Capture and preserve job descriptions at the time of application
  • Follow-Up Management: Automatic follow-up date calculation and reminders
  • Immutable Tracking: Core application data cannot be accidentally modified or deleted
  • Status History: Complete audit trail of application status changes

Tech Stack

  • Frontend: Next.js 14 (React), Tailwind CSS
  • Backend: Next.js API Routes
  • Database: SQLite (via better-sqlite3)
  • Authentication: Custom session-based auth with bcrypt
  • File Storage: Local filesystem (can migrate to cloud storage later)

Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Windows, macOS, or Linux

Installation

  1. Install dependencies:

    npm install
  2. Run the development server:

    npm run dev
  3. Open your browser: Navigate to http://localhost:3000

First Time Setup

  1. Create an account by clicking "Sign Up" on the homepage
  2. Upload your resume(s) from the "Resumes" page
  3. Start tracking applications by clicking "Add Application"

Project Structure

trackapply/
├── app/                    # Next.js app directory
│   ├── api/               # API routes
│   │   ├── auth/          # Authentication endpoints
│   │   ├── applications/  # Application CRUD
│   │   ├── resumes/       # Resume management
│   │   └── followups/     # Follow-up tracking
│   ├── auth/              # Auth pages (signin/signup)
│   ├── dashboard/         # Dashboard page
│   ├── applications/      # Application pages
│   └── resumes/           # Resume library page
├── lib/                   # Core libraries
│   ├── db.ts             # Database setup and schema
│   ├── auth.ts           # Authentication utilities
│   ├── fileStorage.ts    # File storage utilities
│   └── middleware.ts     # Auth middleware
├── data/                  # Data directory (created automatically)
│   ├── trackapply.db     # SQLite database
│   └── users/            # User file storage
└── package.json

Database Schema

The application uses SQLite with the following tables:

  • users - User accounts
  • resumes - Resume library
  • applications - Job applications
  • application_resumes - Immutable resume locks
  • follow_ups - Follow-up scheduling
  • status_history - Application status audit trail

Key Features Explained

Resume Version Locking

When you select a resume for an application, the system:

  1. Creates an immutable copy of the resume file
  2. Stores it in /data/users/{user_id}/applications/{app_id}/resume_locked.pdf
  3. Links it to the application record
  4. This locked version cannot be deleted or modified

Job Description Snapshots

Job descriptions are stored as text in the database at the time of application creation. Even if the original posting is deleted or changed, you'll always have the original requirements.

Follow-Up Management

  • Automatic follow-up dates (default: 7 days after application)
  • Dashboard shows pending follow-ups
  • One-click follow-up completion tracking
  • Custom follow-up date support

Security

  • Passwords are hashed using bcrypt
  • File storage is user-isolated
  • Session-based authentication
  • SQL injection protection via prepared statements
  • File type validation (PDF, DOCX only)
  • File size limits (10MB max)

Development

Build for Production

npm run build
npm start

Database Location

The SQLite database is stored at: data/trackapply.db

User files are stored at: data/users/{user_id}/

Backup

To backup your data:

  1. Copy the data/ directory
  2. The database and all user files are contained within

Deployment

See DEPLOYMENT.md and QUICK_DEPLOY.md for deployment instructions.

Recommended platforms:

  • Railway - Best for SQLite + file storage
  • Render - Also supports persistent storage
  • Vercel - Requires database migration

Documentation

  • GITHUB_SETUP.md - How to push to GitHub
  • DEPLOYMENT.md - Detailed deployment guide
  • QUICK_DEPLOY.md - Quick deployment steps
  • QUICK_START.md - Getting started guide
  • Job_Application_Tracker_Product_Design.md - Product design document

Future Enhancements

  • Browser extension for one-click job logging
  • Email reminders for follow-ups
  • Application analytics dashboard
  • Export data as CSV/JSON
  • Mobile app (React Native)

Troubleshooting

Database errors

  • Ensure the data/ directory is writable
  • Delete data/trackapply.db to reset the database (⚠️ deletes all data)

File upload errors

  • Check file size (max 10MB)
  • Ensure file is PDF or DOCX format
  • Check disk space availability

Authentication issues

  • Clear browser cookies
  • Sign out and sign back in

License

ISC

Support

For issues or questions, please check the documentation files or create an issue on GitHub.

About

Job application tracker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors