Tracktern is a comprehensive job & internship application tracker designed for students and early-career professionals. Track applications, manage smart reminders, and gain AI-powered insights โ all in one beautiful dashboard.
Live Demo โข Report Bug โข Request Feature
Job hunting is overwhelming. Most students struggle with:
- ๐ Lost Applications โ Forgetting where and when you applied
- โฐ Missed Follow-ups โ No system for tracking deadlines
- ๐ No Strategy โ Flying blind without data-driven insights
- ๐ Manual Chaos โ Spreadsheets everywhere, no automation
Tracktern solves this by combining intelligent tracking, automated reminders, and AI-powered insights to transform your job search into a strategic, data-driven process.
|
|
|
|
|
|
Next.js 16 (App Router) โข TypeScript โข Tailwind CSS โข Recharts โข React Hooks
Next.js API Routes โข MongoDB + Mongoose โข Firebase Admin SDK โข Node-Cron
Firebase Authentication โข SMTP Email โข AI Integration (Gemini/OpenRouter)
app/
โโ (auth)/
โ โโ login/
โ โโ register/
โโ (dashboard)/
โ โโ dashboard/
โ โโ applications/
โ โโ reminders/
โ โโ insights/
โ โโ settings/
โโ api/
โโ dashboard/
โโ applications/
โโ reminders/
โโ insights/
backend/
โโ models/
โโ services/
โโ middlewares/
โโ jobs/
โโ config/
Before you begin, ensure you have:
- Node.js 18+ and npm installed
- MongoDB instance (local or Atlas)
- Firebase project with Authentication enabled
- Email account for SMTP (Gmail recommended)
- OpenRouter/Gemini API key (optional, for AI features)
git clone https://github.com/Shanidhya01/Tracktern.git
cd Trackternnpm install
# or
yarn install
# or
pnpm installCreate a .env file in the root directory:
# Database
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/tracktern
# Firebase Configuration
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_CLIENT_EMAIL=your-client-email@your-project.iam.gserviceaccount.com
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYour Private Key\n-----END PRIVATE KEY-----\n"
# Email Service (Gmail)
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-specific-password
# AI Service (Optional)
AI_PROVIDER=openrouter
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxx
# OR
GEMINI_API_KEY=xxxxxxxxxxxxx
# Application URL (for production)
NEXT_PUBLIC_APP_URL=http://localhost:3000- Go to Firebase Console
- Create a new project or use existing
- Enable Authentication โ Sign-in Methods โ Enable Google & Email/Password
- Go to Project Settings โ Service Accounts โ Generate new private key
- Copy credentials to
.env
Option A: MongoDB Atlas (Recommended)
1. Go to https://www.mongodb.com/cloud/atlas
2. Create free cluster
3. Create database user
4. Whitelist your IP (or 0.0.0.0/0 for development)
5. Copy connection string to MONGODB_URIOption B: Local MongoDB
# Install MongoDB locally
# macOS
brew install mongodb-community
# Ubuntu
sudo apt-get install mongodb
# Start MongoDB
mongod --dbpath /path/to/your/datanpm run dev๐ App runs on http://localhost:3000
npm run build
npm startTracktern runs intelligent background processes to keep your job search on track:
// Runs every 6 hours
โ
Checks for upcoming reminders
โ
Sends email notifications for overdue items
โ
No page visit required
โ
Graceful fallback on failure// Triggered on-demand with smart caching
โ
Analyzes application patterns
โ
Generates actionable recommendations
โ
Caches results for 24 hours
โ
Falls back gracefully when quota exceeded// Real-time calculation on dashboard load
โ
Weekly application count
โ
Status distribution
โ
Success rate tracking
โ
Stale application detection
Get personalized recommendations powered by AI
POST /api/auth/login // Login with email/password
POST /api/auth/register // Register new user
POST /api/auth/google // Google OAuth login
POST /api/auth/logout // Logout userGET /api/applications // Get all applications
POST /api/applications // Create new application
PUT /api/applications/:id // Update application
DELETE /api/applications/:id // Delete application
GET /api/applications/:id // Get single applicationGET /api/reminders // Get all reminders
POST /api/reminders // Create reminder
PUT /api/reminders/:id // Update reminder
DELETE /api/reminders/:id // Delete reminder
POST /api/reminders/check // Check and send email remindersGET /api/dashboard // Get dashboard statistics
GET /api/insights // Get AI-generated insights
POST /api/insights/regenerate // Force regenerate insights| Phase | Status | Features |
|---|---|---|
| Phase 1 | โ Complete | Authentication, Base UI, Firebase Integration |
| Phase 2 | โ Complete | Applications CRUD, Status Tracking, Search/Filter |
| Phase 3 | โ Complete | Reminders System, Email Notifications, Cron Jobs |
| Phase 4 | โ Complete | Dashboard Analytics, AI Insights, Charts |
| Phase 5 | ๐ง In Progress | Mobile PWA, Enhanced UI, Performance Optimization |
| Phase 6 | ๐ Planned | Resume Analyzer, Interview Prep, Advanced Analytics |
- Core application tracking
- Smart reminders system
- AI-powered insights
- Mobile-responsive PWA
- Dark mode support
- Resume Analyzer โ AI-powered resume feedback
- Interview Prep โ Question bank & mock interviews
- Application Streak โ Gamification & motivation
- Chrome Extension โ One-click application logging
- LinkedIn Integration โ Auto-import applications
- Team Collaboration โ Share insights with peers
- Salary Insights โ Compensation data integration
- Company Reviews โ Glassdoor integration
- Application Templates โ Save and reuse cover letters
- Mobile Apps โ iOS & Android native apps
Contributions are what make the open-source community amazing! Any contributions you make are greatly appreciated.
- Fork the repository
- Create your feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m 'Add some AmazingFeature' - Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
- Follow TypeScript best practices
- Maintain consistent code style (Prettier + ESLint)
- Write clear commit messages
- Add tests for new features
- Update documentation as needed
- Email reminders may delay on free hosting tiers
- AI insights require API keys (optional feature)
- Large application lists may need pagination
See Issues for full list.
Distributed under the MIT License. See LICENSE for more information.
If you find Tracktern helpful, consider:
- โญ Starring this repository
- ๐ฆ Sharing with friends preparing for jobs
- ๐ Reporting bugs or suggesting features
- ๐ค Contributing to the codebase
- โ Buying me a coffee (coming soon!)
Special thanks to:
- Next.js for the amazing framework
- Firebase for authentication services
- MongoDB for database solutions
- Tailwind CSS for beautiful styling
- Recharts for data visualization
Tracktern โ Transform your job search into a strategic, data-driven process
Made with ๐ for job seekers everywhere