What you will build
You will build a Mini Job Tracker where a user can sign in, add job applications, update status, and view their list from any device.
- Stack: React (Vite), Firebase Auth, Firestore, Firebase Hosting
- Outcome: Git repo + deployed link + a simple interview walkthrough
- Time: 60 to 90 minutes if you follow the checklist
This guide is intentionally practical. It gives you a working path, plus optional deep dives if you want more detail.
MVP scope
- Email/password login
- Add job application (company, role, status, notes, link)
- List and update status (Applied, Interview, Offer, Rejected)
Non-goals: resume parsing, analytics, team sharing, scraping, auto follow-ups.
Quick start checklist
Skim this first. The rest of the page is optional deep dives.
- 1) Create the app and Git repo Create a Vite React app, run it locally, then make your first commit.
- 2) Create a Firebase project In Firebase Console: create project, add a web app, enable Auth (email/password), create Firestore database.
- 3) Connect Firebase to your app Add Firebase config, initialize Auth and Firestore, and confirm the app runs.
- 4) Add login and signup Add a simple auth screen and keep a clean auth state in the app.
- 5) Build the MVP feature Add and list job applications for the signed-in user.
- 6) Add basic rules Firestore rules: signed-in users only, and users can only access their own documents.
- 7) Deploy to Firebase Hosting Build the app, init Hosting, deploy, and copy the URL into your README.
- 8) Prepare your walkthrough What you built, MVP scope, trade-offs, how you used AI, how you verified and deployed.
Optional deep dives
Open only what you need. Most people get stuck in auth state, Firestore rules, or deployment configuration.
Prerequisites and setup (Node, Git, Firebase account)
- Install Node (LTS), Git, and Cursor
- Create a Firebase account and open Firebase Console
node -v
npm -v
git --version
Cursor workflow and prompt pack (copy and paste)
A simple rule: ask Cursor for a plan and file list first, then implement in small steps, run locally, and commit.
Prompts that work well for this project
Prompt 1 (plan):
You are helping me build a Mini Job Tracker using React (Vite) + Firebase Auth + Firestore + Firebase Hosting.
Generate a step-by-step plan and the file list you will touch. Keep it beginner-friendly.
Prompt 2 (auth):
Implement email/password auth with Firebase. Include login, signup, logout, and clean auth state handling.
Prompt 3 (CRUD):
Implement Firestore CRUD for job applications for the current user. Include loading, empty, and error states.
Prompt 4 (rules):
Write Firestore rules so users can only read/write their own documents in a collection called applications.
Explain common permission errors and how to fix them.
Prompt 5 (deploy):
Give Firebase Hosting deployment steps for a Vite React app. Include build folder and SPA routing notes.
Firebase setup (Console steps and what goes in code)
- Firebase Console: create project, add a web app
- Enable Authentication: Email/Password
- Create Firestore database
Firebase web config is not a secret. Do not put private keys or service account JSON in the client.
// Example: src/firebase.ts
// Initialize Firebase app, auth, and firestore here.
// Use the web config from Firebase Console -> Project settings -> Your apps.
Data model and Firestore rules (safe baseline)
Collection: applications
// Document fields (suggested)
userId: string
company: string
role: string
status: "Applied" | "Interview" | "Offer" | "Rejected"
link: string (optional)
notes: string (optional)
createdAt: timestamp
updatedAt: timestamp
Most permission errors happen when userId is missing or not set to the signed-in user.
// Firestore rules (baseline)
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /applications/{docId} {
allow read, write: if request.auth != null
&& resource.data.userId == request.auth.uid;
allow create: if request.auth != null
&& request.resource.data.userId == request.auth.uid;
}
}
}
This is a baseline. In a live workshop we also cover validation rules and safer update patterns.
Deploy to Firebase Hosting (Vite) and common errors
# Install and login
npm i -g firebase-tools
firebase login
# In your project folder
npm run build
firebase init hosting
firebase deploy
Common issues
- Wrong public folder: for Vite it is usually
dist - SPA routes 404 on refresh: enable single-page app rewrite during init
- Deployed to wrong project: check selected Firebase project before deploy
- Auth not working: check authorized domains in Firebase Auth settings
Copy-paste templates (MVP scope, README, testing, commits, walkthrough)
MVP scope worksheet
Problem (1 line):
Target user (1 line):
MVP features (max 3):
Non-goals (max 5):
User flow (5 steps):
Trade-offs (3):
README template
# Mini Job Tracker
Deployed link:
## What this does
- Login
- Add job application
- List and update status
## How to run locally
npm install
npm run dev
Manual test checklist
- Signup works
- Login works
- Add application works
- Only my data is visible
- Status update works
- Refresh does not break the app
- Deployed link loads and login works
Commit message examples
init: create vite app
chore: add firebase config and init
auth: add login, signup, logout
jobs: add create application form
jobs: list and update status
rules: restrict applications by user
deploy: configure firebase hosting
Interview walkthrough script
1) What I built (MVP scope)
2) Why these features first
3) What trade-offs I accepted
4) How I used AI and how I verified output
5) How I deployed and what I would improve next
If you want live support
The hard parts are usually auth state, rules errors, and deployment details. If you want someone to troubleshoot with you, review your repo, and help you finish with confidence, join the 2-day workshop.
Want to do this live in 2 days?
AI-First Fresher is a live workshop where you take an idea, build a product in a Git repo, and deploy it with AI support.
₹999 commitment fee • Refund after Day 1 if not relevant (full refund)