π’ Corporate Job Search Tracker
1. Project Overview
- What is this project? A high-performance React application designed to act as a centralized command center for job seekers targeting Indian corporate and IT sectors.
- What real problem does it solve and who is it built for? Tracking applications across hundreds of companies manually (via spreadsheets) is tedious and error-prone. This app provides a pre-built, searchable database of 550+ companies with vital stats (Notice Period, Buyout policy), allowing job seekers to instantly track their status, compute realistic take-home salaries, and safely sync their journey to the cloud.
- Value Proposition: Track 550+ companies, compare realtime market metrics, and cloud-sync your corporate job search journeyβall in one secure, high-performance dashboard.
2. Live Demo & Visuals
- Live Demo Link: [https://corporate-job-tracker.vercel.app/]



-->
3. Tech Stack & Choices
| Technology | Version | Category | Why Chosen |
|---|---|---|---|
| React | ^19.2.4 | Core | Component-based UI architecture enabling reusable pieces like ToolCard and highly reactive interfaces for live-filtering the massive company list. |
| Vite | ^7.3.1 | Dev Tools | Lightning-fast build times and Hot Module Replacement (HMR) significantly outperforming Create React App for rapid development. |
| Tailwind CSS | ^4.2.1 | Styling | Utility-first framework used for rapid, inline styling, creating complex layouts (glassmorphism in HeroStats) without context switching between CSS files. |
| Firebase | ^12.9.0 | Storage & APIs | Provides effortless authentication (GoogleAuthProvider) and real-time NoSQL cloud synchronization (Firestore) for user data. |
| Chart.js / React-Chartjs-2 | ^4.5.1 / ^5.3.1 | Data Viz | Robust and responsive rendering engine used in MarketCharts.jsx to visualize complex notice period and buyout aggregations elegantly. |
Custom Hooks useLocalStorage | N/A | State Management | Guarantees an offline-first experience; user states are immediately saved locally before being pushed to the cloud. |
4. Core Features
- β Cloud-Synced Master Tracker:
- β Live Market Data Dashboard:
companyData database to render interactive Doughnut and Bar charts mapping out Industry Distributions, Buyout Availability, and Notice Periods.
User Experience: Users see at a glance what percentage of service-based companies actually offer buyouts, aiding in negotiation strategies.
- Comprehensive Career Calculators Suite:
CareerTools.jsx) powered by a central utility (salaryUtils.js) to help users plan their career finances and timelines:
- Tenure Calculator: Calculates exact time (Years/Months/Days) spent at a company and highlights Gratuity Eligibility (5+ Years).
- Exit Date Calculator: Calculates the exact Last Working Day (LWD) given a resignation date and notice period (30/45/60/90 days).
- In-Hand Calculator: Computes approximate monthly take-home salaries based on annual CTC factoring in the New Tax Regime.
- Tax Breakup Calculator: Breaks down the exact Monthly EPF, Monthly Tax deductions, and Take Home Pay.
- Hourly Value Tool: Calculates true hourly take-home pay based on annual CTC and adjustable hours worked per week (slider from 20 to 80 hrs).
- Compare Offers: Compares current CTC vs a New Offer CTC side-by-side, detailing the exact monthly in-hand difference and yearly tax implications.
User Experience: Each tool is presented as an interactive, beautifully styled ToolCard that auto-calculates instantly as users adjust inputs and sliders.
- Local Backup & Restore Engine:
Navbar, clicking "Backup" securely downloads a local JSON file directly to their hardware without server interaction.
- Custom Company Integrations:
CustomCompanyForm, users add local startups. These merge seamlessly into the main tracking table.
5. Project Structure
Corporate-Job-Search/
βββ index.html # Entry point for Vite
βββ package.json # Project metadata & NPM dependencies
βββ vite.config.js # Vite bundler configuration
βββ eslint.config.js # ESLint linting configuration
βββ public/ # Static uncompiled assets
βββ src/ # Main source directory
βββ App.jsx # Main wrapper, Auth Logic & Data Sync
βββ main.jsx # React DOM root rendering
βββ firebase.js # SDK Config: Authentication & Firestore
βββ index.css # Global Tailwind CSS entry
βββ assets/ # Compiled assets & images
β βββ bg.jpeg
βββ data/
β βββ companyData.jsx # Core Database: Array of 550+ companies
βββ hooks/
β βββ useLocalStorage.js # Custom hook for resilient local offline storage
βββ components/
βββ layout/
β βββ Navbar.jsx # Top navigation, Auth State & JSON Export
β βββ Footer.jsx # Global footer
βββ hero/
β βββ HeroStats.jsx # Banner processing and displaying live statistics
βββ tracker/
β βββ Tracker.jsx # Master container bridging filters & data table
β βββ CompanyTable.jsx # Row-mapping core datatable
β βββ FilterBar.jsx # Clickable tag-based filtering rules
β βββ CustomCompanyForm.jsx # Addition of unlisted startups
βββ dashboard/
β βββ MarketCharts.jsx # Chart.js wrapper for notice / sector rendering
βββ checkout/
β βββ PremiumUpgrade.jsx # Gateway scaffolding using Razorpay
βββ calculators/ # Suite of mathematical utilities
βββ CareerTools.jsx # Grid wrapper for all below calculators
βββ SalaryCalculator.jsx # In-Hand calculation engine
βββ TaxCalculator.jsx # Exact EPF and Tax splits
βββ ExitDateCalculator.jsx # LWD & notice period math
βββ TenureCalculator.jsx # Date-object manipulation for time-at-job
βββ FutureTool.jsx # Dynamic hourly value projections
βββ CompareOffers.jsx # Side-by-Side CTC state tracking
βββ ToolCard.jsx # Isolated UI card layout component
βββ salaryUtils.js # The mathematical core for the Tax Regime
6. State Management & Data Flow
State Architecture
The global truth in this application is anchored insrc/App.jsx. It utilizes hybrid state integration:
user(useState): Retains the Firebase active session context resolving rendering gates (Tracker visibility).trackerData(useLocalStorage): A map tying Company Names (Keys) to Status Objects (Values:{ status: "Applied", notes: "" }).customCompanies(useLocalStorage): An array capturing companies added manually by the user.
Data Flow Walkthrough: Updating a Job Status
When a user marks "Accenture" as "Interviewing":- The user action triggers
onUpdateTrackerlocalized insideCompanyTable.jsx. - This event bubbles up through
Tracker.jsxinto the root methodhandleUpdateTrackerinApp.jsx. App.jsxexecutes a functional state update ontrackerData, mutating the key for "Accenture" to hold{ status: "Interview" }.- The
useLocalStoragehook inherently captures this mutation and fires awindow.localStorage.setItemcall to persist it locally. - In parallel,
App.jsxexecutes the asynchronoussaveToCloudfunction. saveToCloudreferencesdoc(db, "users", auth.currentUser.uid)and pushes the absolute state snapshot to Firebase Firestore.- Below the state tree:
Tracker.jsxrecalculates itsuseMemofilter constraints, andHeroStats.jsxrecalculates its aggregation counters, dynamically re-rendering the UI immediately across the board.
7. Browser APIs & Technical Highlights
Native Browser APIs Utilized
window.localStorage: Used heavily insidesrc/hooks/useLocalStorage.jsto parse (getItem) and serialize (setItem) the coretrackerDataensuring instantaneous app load states before remote network resolutions.FileReader API: Implemented insrc/components/layout/Navbar.jsx(handleFileChange). When a user restores data, it leveragesreadAsTextcoupled withonloadto stream and parse local JSON configurations securely into the component state.- Blob & Anchor Protocol
document.createElement('a'): Utilized inNavbar.jsx(exportJSON) to execute a local file export. It encodes thelocalStoragepayload into a data URI (data:text/json) and triggers a programmatic.click()to save it offline bypassng a web server. window.confirm: Deployed inApp.jsx(handleResetData&handleDeleteCustomCompany) as a rapid, native interruption pattern preventing accidental destructive state erasures.
External Libraries Integration
- Firebase Auth (
signInWithPopup,onAuthStateChanged): Used inApp.jsxand injected tightly with React'suseEffect. Upon mount, it establishes an observer detecting auth context switches, enabling/disabling the core tracking interface instantly. - Firebase Firestore (
getDoc,setDoc): Facilitates the BaaS (Backend as a Service) layer. Merges remote cloud states seamlessly into the local application state to enforce multi-device parity. - Chart.js via
react-chartjs-2: Mounted insidesrc/components/dashboard/MarketCharts.jsx. Accepts specifically formatted objects (labels,datasets) synthesized from the massivecompanyDatalayout array to construct mathematically representativeDoughnutandBarcharts.
Performance Optimizations
- Memoized Filtering (
useMemoinTracker.jsx): The raw iteration over ~550 companies across complex cross-filters (Text Strings, Enum Checks, Custom Boolean flags) is wrapped inuseMemo. This prevents standard React re-frames from running O(n) computations relentlessly on keystrokes in the search bar. - Component Sub-structuring: Granular separation is enforced. Entering numbers into
SalaryCalculator.jsxonly triggers re-renders explicitly confined withinToolCard.jsxmargins, utterly bypassing the heavy Virtual DOM load generated byCompanyTable.jsxandMarketCharts.jsx. - Deduplication Matrix: Implemented inside
Tracker.jsxutilizingArray.from(new Map())to intercept identically named entries incompanyData, preventing React key collision errors seamlessly prior to render mapping.
8. Getting Started & Installation
To run this project locally, follow these steps:
Prerequisites
- Node.js: v18 or higher recommended.
- npm or yarn
Installation
- Clone the repository:
git clone <your-repository-url>
cd Corporate-Job-Search
- Install dependencies:
npm install
- Firebase Configuration:
src/firebase.js. If you wish to use your own database instance, replace the firebaseConfig object in that file with your own credentials retrieved from the Firebase Console.
- Start the Development Server:
npm run dev
The application will boot up and be accessible locally at http://localhost:5173.
9. Roadmap (Upcoming Features)
- [ ] Full Razorpay Integration: Transition
PremiumUpgrade.jsxfrom a gateway mockup to evaluating live webhook events for unlocking premium components in production. - [ ] PWA Support: Convert the app into a Progressive Web App for true native-like desktop and mobile installation.
- [ ] AI Cover Letter Generator: Utilize an LLM API to generate customized cover letters based on the metadata saved in the tracker.
10. License & Contributing
This project is licensed under the ISC License.Contributions, issues, and feature requests are highly encouraged! If you'd like to contribute:
- Fork the Project
- 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
Built intricately for job-seekers scaling the corporate ladder.
Interested in this project?
I'm always open to discussing technical implementations or potential collaborations.