This project represents the bridge between Frontend Beauty and Backend Logic. It is a fully functional SaaS (Software as a Service) prototype designed to solve a real-world problem: the chaos of job hunting.
Instead of a static UI, this application implements a Secure Full-Stack Architecture. It features a decoupled client-server model where a React frontend communicates with a robust Node.js API, proving complete mastery of the web development lifecycle.
| Feature | Description |
|---|---|
| ๐ Iron-Clad Security | Implements JWT (JSON Web Tokens) authentication and Bcrypt password hashing. Your data is locked behind a digital vault. |
| ๐ฅ Multi-User Isolation | A true SaaS architecture. Multiple users can register and login, but the database strictly isolates dataโUser A never sees User B's jobs. |
| โก Instant CRUD | Create, Read, Update, and Delete operations happen instantly. The UI reflects backend changes in real-time without friction. |
| ๐ง Smart Interceptors | Powered by Axios Interceptors, the frontend automatically injects security tokens into every request, ensuring seamless and secure communication. |
A Monorepo structure separating the "Brain" (Server) from the "Face" (Client).
JOB-APPLICATION-TRACKER/
โโโ ๐ client/ # ๐จ The Frontend (Next.js)
โ โโโ ๐ src/app/
โ โ โโโ ๐ login/ # Auth Pages
โ โ โโโ ๐ register/
โ โ โโโ page.tsx # Protected Dashboard
โ โโโ ๐ components/ # ๐งฉ Reusable UI
โ โ โโโ JobCard.tsx
โ โ โโโ JobForm.tsx
โ โ โโโ Navbar.tsx
โ โโโ ๐ lib/ # ๐ API Connectors
โ โ โโโ axios.ts # The "Security Guard" (Interceptors)
โ โโโ ๐ types/ # TypeScript Definitions
โ
โโโ ๐ server/ # ๐ง The Backend (Node.js)
โ โโโ ๐ prisma/ # ๐๏ธ Database Engine
โ โ โโโ dev.db # SQLite Database
โ โ โโโ schema.prisma # Data Models (User + Job)
โ โโโ server.js # API Routes & Auth Logic
โ
โโโ .gitignore # Security RulesBuilding this project demonstrated advanced Full-Stack competencies:
- Authentication Flow: Implementing secure Login/Register systems from scratch using Bcrypt and JWT.
- Relational Data Modeling: Using Prisma to link Users to their specific Job Applications (One-to-Many Relationships).
- API Protection: Writing Express Middleware (
authenticateToken) to reject unauthorized access to private routes. - State Management: Handling complex React state for editing, deleting, and updating UI lists dynamically.
Since this is a Full-Stack app, you need to run the Backend and Frontend simultaneously.
git clone https://github.com/chamikathereal/job-application-tracker.git
cd job-application-trackerOpen a terminal and run:
cd server
npm install # Install dependencies
npx prisma migrate dev # Create the Database
npx nodemon server.js # Start the APIServer will run on http://localhost:5000
Open a new terminal tab and run:
cd client
npm install # Install dependencies
npm run dev # Start Next.jsApp will run on http://localhost:3000
Software Engineer | Sri Lanka
"Code is poetry, and I'm just trying to make it rhyme." ๐
Last Updated: Sunday, January 18, 2026
Built with โค๏ธ and โ by Chamika Gayashan. Star this repo if you found it useful! โญ
