A complete web application for managing internship applications strategically with intelligent analytics, real-time tracking, and data-driven insights.
Internship Application Tracker helps students and freshers manage their internship applications efficiently by providing:
- β Centralized application tracking dashboard
- β Real-time status updates and timeline visualization
- β Skill matching analytics and gap analysis
- β Company intelligence and performance insights
- β Smart recommendations engine
- β Advanced filtering and search with MongoDB aggregation pipelines
- β Mobile-responsive UI with vanilla JavaScript
- β Complete RESTful API with MongoDB backend
- Node.js (v14+)
- MongoDB (local or cloud - MongoDB Atlas)
- npm or yarn
- Modern web browser
cd projectnpm installcp .env.example .envEdit .env file:
MONGODB_URI=mongodb://localhost:27017/internship-tracker
JWT_SECRET=your-secret-key-change-in-production
PORT=3000
# Windows
mongod
# macOS/Linux
mongod --dbpath /path/to/datanpm start
# or for development with auto-reload
npm run devBackend will run on: http://localhost:3000
# Open browser and go to:
http://localhost:3000/frontend/index.html
# Or open directly:
frontend/index.htmlproject/
βββ frontend/
β βββ index.html # Dashboard (home page)
β βββ pages/
β β βββ tracker.html # Application tracker
β β βββ analytics.html # Analytics dashboard
β β βββ add-application.html # Add/Edit application
β β βββ profile.html # User profile
β β βββ login.html # Login/Signup
β βββ css/
β β βββ styles.css # Global styles
β β βββ dashboard.css # Dashboard styles
β β βββ tracker.css # Tracker styles
β β βββ analytics.css # Analytics styles
β β βββ form.css # Form styles
β β βββ profile.css # Profile styles
β β βββ auth.css # Auth page styles
β βββ js/
β βββ api.js # API calls & helpers
β βββ auth.js # Authentication logic
β βββ dashboard.js # Dashboard functionality
β βββ tracker.js # Tracker table logic
β βββ analytics.js # Analytics charts
β βββ form-handler.js # Form submission
β βββ profile.js # Profile management
βββ backend/
β βββ server.js # Express server with all routes
β βββ sampleData.js # Sample data for testing
βββ package.json # Dependencies
βββ .env.example # Environment template
βββ README.md # This file
Email: demo@example.com
Password: demo123
Or create a new account during signup.
- Quick metrics cards (Total apps, Success rate, etc.)
- Status distribution pie chart
- Recent activities feed
- Upcoming interviews list
- Application trend chart
Access: http://localhost:3000/frontend/index.html
- Table view of all applications
- Advanced filters (status, salary, skill match, date range)
- Real-time search
- Inline bulk actions
- Export to CSV
- Sort by any column
Access: Tracker β Tracker page
- 6 key metrics cards
- Status distribution pie chart
- Company-wise success rate chart
- Timeline trend analysis
- Salary distribution
- Skills demand analysis
- AI recommendations
- Performance insights
Access: Tracker β Analytics page
- Comprehensive form with validation
- Auto skill match calculation
- Company notes and recruiter info
- Interview scheduling
- Tags and status management
Access: "Add Application" button
- User profile management
- Skills management (add/remove)
- Preferences (salary, roles, companies)
- Account settings
- Password management
Access: Profile β Profile page
{
"_id": ObjectId,
"name": "Student Name",
"email": "student@example.com",
"password": "hashed_password",
"profile": {
"bio": "About me",
"location": "City",
"yearsOfExperience": 0
},
"skills": [
{ "name": "Java", "proficiency": "Advanced", "yearsOfExperience": 2 }
],
"preferences": {
"salary": { "min": 25000, "max": 50000 },
"workMode": "Remote",
"targetRoles": ["Backend Engineer"],
"targetCompanies": ["Google", "Microsoft"]
}
}{
"_id": ObjectId,
"userId": ObjectId,
"company": "Google",
"jobTitle": "Backend Engineer Intern",
"location": "Bangalore",
"appliedDate": ISODate,
"currentStatus": "Interview Scheduled",
"statusHistory": [
{ "status": "Applied", "date": ISODate, "notes": "..." }
],
"skillsRequired": ["Java", "MongoDB", "REST APIs"],
"skillMatchPercentage": 85,
"salary": { "min": 50000, "max": 70000 },
"companyNotes": { "cultureFit": "...", "recruiterName": "..." },
"timeline": { "interviewDate": ISODate },
"notes": "Good opportunity",
"tags": ["Dream Company", "High Priority"],
"rating": 4.5
}POST /api/auth/signup # Create account
POST /api/auth/login # Login
GET /api/auth/me # Get current user
PUT /api/auth/profile # Update profile
POST /api/auth/change-password # Change password
GET /api/applications # List all applications
GET /api/applications/:id # Get single application
POST /api/applications # Create application
PUT /api/applications/:id # Update application
DELETE /api/applications/:id # Delete application
PATCH /api/applications/:id/status # Update status
DELETE /api/applications/bulk/delete # Bulk delete
GET /api/analytics/metrics # Key metrics
GET /api/analytics/status-distribution # Status breakdown
GET /api/analytics/company-success # Company success rates
GET /api/analytics/trend # Application timeline
GET /api/analytics/skills # Skills analysis
GET /api/analytics/recommendations # AI recommendations
GET /api/analytics/insights # Performance insights
// Find top trending skills in applications
db.applications.aggregate([
{ $match: { userId: ObjectId("...") } },
{ $unwind: "$skillsRequired" },
{ $group: { _id: "$skillsRequired", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])// Smart filtering with multiple criteria
db.applications.find({
userId: ObjectId("..."),
currentStatus: { $in: ["Applied", "Shortlisted"] },
skillMatchPercentage: { $gte: 75 },
appliedDate: { $gte: new Date(Date.now() - 30*24*60*60*1000) }
})db.applications.createIndex({ userId: 1, currentStatus: 1 })
db.applications.createIndex({ userId: 1, appliedDate: -1 })
db.applications.createIndex({ skillMatchPercentage: -1 })db.applications.aggregate([
{ $group: {
_id: "$company",
total: { $sum: 1 },
offers: { $sum: { $cond: [{ $in: ["$currentStatus", ["Offer Received"]] }, 1, 0] } }
}
},
{ $project: { company: "$_id", successRate: { $divide: ["$offers", "$total"] } } }
])db.applications.aggregate([
{ $unwind: "$skillsRequired" },
{ $match: { "skillsRequired": { $nin: userSkills } } },
{ $group: { _id: "$skillsRequired", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])- 0:00-1:00 - Show Dashboard with metrics
- 1:00-2:00 - Search/Filter with MongoDB aggregation
- 2:00-3:00 - Show Analytics and insights
- 3:00-4:00 - Add application demo
- 4:00-5:00 - Explain technical excellence
- Backend running on port 3000
- MongoDB connected
- Sample data loaded
- All pages tested
- Network tab shows API calls
- Analytics rendering correctly
- β Complex MongoDB aggregation pipelines
- β Real-time data synchronization
- β Advanced filtering with multiple criteria
- β Responsive mobile design
- β Performance optimized with indexes
- β Production-ready code architecture
- β Complete user authentication
- β Practical, immediately useful application
Edit frontend/css/styles.css:
:root {
--primary-color: #6366f1; /* Change primary color */
--secondary-color: #f59e0b;
...
}- Create new route in
backend/server.js - Add corresponding API call in
frontend/js/api.js - Create display function in
frontend/js/analytics.js
Edit frontend/pages/add-application.html and update backend validation in server.js
The application is fully responsive:
- β Mobile (320px+)
- β Tablet (768px+)
- β Desktop (1024px+)
Test with Chrome DevTools responsive design mode.
Solution: Ensure MongoDB is running
- Local: mongod command
- Atlas: Check connection string in .env
Solution: Change PORT in .env
PORT=3001
Solution: Check CORS and API_BASE_URL
Edit frontend/js/api.js:
const API_BASE_URL = 'http://localhost:3000/api';
Solution:
1. Check browser console for errors
2. Check network tab for API calls
3. Verify MongoDB has data
4. Check JWT token in localStorage
- β Database indexes on frequently queried fields
- β Aggregation pipelines for complex analytics
- β Frontend caching with localStorage
- β Lazy loading for charts
- β Efficient DOM manipulation
- β JWT-based authentication
- β Password hashing with bcryptjs
- β CORS enabled
- β Input validation on backend
- β Protected routes with auth middleware
- Push to GitHub
- Connect to deployment platform
- Set environment variables
- Deploy
- Update API_BASE_URL to production server
- Deploy static files
- Enable HTTPS
- Create free cluster
- Get connection string
- Update MONGODB_URI in .env
- Resume version tracking
- Interview preparation module
- Email notifications
- Google Calendar integration
- AI-powered suggestions
- Mobile app (React Native)
- Video interview practice
- Salary negotiation tips
- Real-time collaboration
- Export analytics as PDF
Feel free to enhance this project:
- Add new features
- Improve UI/UX
- Optimize queries
- Add tests
- Fix bugs
MIT License - Use freely for learning and projects
For issues or questions:
- Check troubleshooting section
- Review API documentation
- Check MongoDB logs
- Check browser console
This project demonstrates:
- β Full-stack development skills
- β Database design expertise
- β Frontend development proficiency
- β API architecture knowledge
- β Real-world problem solving
- β User-centered design
Happy coding! π
Version: 1.0.0
Created: December 2025
Status: Hackathon Ready β