A comprehensive full-stack web application designed to streamline and organize your job search process. Track applications, manage your professional profile, generate resumes, and leverage AI-powered features to enhance your job application workflow.
- User Authentication: Secure Firebase-based authentication system
- Profile Management: Complete professional profile with education, work experience, projects, and technical skills
- Job Application Tracking: Track applications through multiple stages (Draft, Applied, Interview, Offer, Rejection, Withdrawn)
- Response Tracking: Log and manage responses from employers (emails, calls, interviews, offers, rejections)
- Job Search: Search and discover job opportunities
- Resume Generation: Generate professional resumes in LaTeX format
- AI-Powered Features: Integration with OpenRouter API (DeepSeek) for intelligent job application assistance
- Responsive Design: Modern, mobile-friendly interface built with Tailwind CSS
- Real-time Updates: Efficient data fetching with React Query
- State Management: Centralized state management with Zustand
- Protected Routes: Secure route protection with profile completeness checks
- React 19.2 - Modern UI library
- TypeScript - Type-safe development
- Vite - Fast build tool and development server
- React Router DOM - Client-side routing
- TanStack React Query - Server state management
- Zustand - Global state management
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Icon library
- Firebase SDK - Client-side Firebase integration
- Django 5.0 - High-level Python web framework
- Django REST Framework - Powerful toolkit for building Web APIs
- Firebase Admin SDK - Server-side Firebase authentication
- SQLite - Lightweight database (production can use PostgreSQL)
- CORS Headers - Cross-origin resource sharing support
- OpenRouter API - AI model integration for intelligent features
Before you begin, ensure you have the following installed:
- Python 3.8+
- Node.js 18+ and npm
- Firebase Project with Authentication enabled
- OpenRouter API Key (optional, for AI features)
git clone <repository-url>
cd job-application-organizer# Navigate to backend directory
cd backend
# Create a virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r ../requirements.txt
# Run migrations
python manage.py migrate
# Create a superuser (optional)
python manage.py createsuperuser# Navigate to frontend directory
cd ../frontend
# Install dependencies
npm installCreate a .env file in the backend directory with the following variables:
# Firebase Configuration
FIREBASE_CREDENTIALS_PATH=backend/firebase-key.json
# OpenRouter API (Optional - for AI features)
OPENROUTER_API_KEY=your_openrouter_api_key_here
API_BASE_URL=https://openrouter.ai/api/v1
MODEL_NAME=deepseek/deepseek-r1
# Django Secret Key (for production)
SECRET_KEY=your-secret-key-here
DEBUG=True- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Download your service account key JSON file
- Place it in the
backenddirectory asfirebase-key.json - Update your Firebase configuration in the frontend Firebase config file
Terminal 1 - Backend:
cd backend
python manage.py runserverThe backend will be available at http://localhost:8000
Terminal 2 - Frontend:
cd frontend
npm run devThe frontend will be available at http://localhost:5173
Build Frontend:
cd frontend
npm run buildServe with Django:
cd backend
python manage.py collectstatic --noinput
python manage.py runserverjob-application-organizer/
βββ backend/ # Django backend application
β βββ applications/ # Application tracking models and views
β βββ auth_app/ # Firebase authentication
β βββ config/ # Django project settings
β βββ JobApplication/ # Job posting models
β βββ profiles/ # User profile management
β βββ resumes/ # Resume generation functionality
β βββ manage.py # Django management script
β βββ db.sqlite3 # SQLite database (development)
β
βββ frontend/ # React frontend application
β βββ src/
β β βββ api/ # API client functions
β β βββ components/ # Reusable React components
β β βββ pages/ # Page components
β β βββ store/ # Zustand state management
β β βββ App.tsx # Main application component
β βββ public/ # Static assets
β βββ package.json # Frontend dependencies
β
βββ requirements.txt # Python dependencies
βββ README.md # This file
POST /auth/verify/- Verify Firebase tokenPOST /auth/login/- User login
GET /api/profile/- Get user profilePUT /api/profile/- Update user profilePOST /api/profile/education/- Add education entryDELETE /api/profile/education/{id}/- Remove education entry- Similar endpoints for job experiences and projects
GET /api/applications/- List all applicationsPOST /api/applications/- Create new applicationGET /api/applications/{id}/- Get application detailsPUT /api/applications/{id}/- Update applicationDELETE /api/applications/{id}/- Delete application
GET /api/jobs/- List job postingsPOST /api/jobs/- Create job postingGET /api/jobs/{id}/- Get job details
GET /api/resumes/- List user resumesPOST /api/resumes/generate/- Generate resume
- Create an Account: Navigate to
/authand sign up using Firebase authentication - Complete Your Profile: Add your education, work experience, and projects
- Search for Jobs: Use the search page to find job opportunities
- Track Applications: Create applications and track them through different stages
- Generate Resumes: Build and download professional resumes based on your profile
- Draft: Initial application being prepared
- Applied: Application submitted to employer
- Interview: Interview stage (phone, technical, final)
- Offer: Job offer received
- Rejection: Application rejected
- Withdrawn: Application withdrawn by candidate
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 for Python code
- Use ESLint and Prettier for frontend code
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Firebase for authentication services
- OpenRouter for AI API access
- Django and React communities for excellent documentation and tools
For support, please open an issue in the repository or contact the development team.
Built with β€οΈ to help job seekers stay organized and successful in their job search journey.