Skip to content

Rp011602/mongocraft18

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Internship Application Tracker - Hackathon Ready

A complete web application for managing internship applications strategically with intelligent analytics, real-time tracking, and data-driven insights.

πŸ“‹ Project Overview

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

πŸš€ Quick Start

Prerequisites

  • Node.js (v14+)
  • MongoDB (local or cloud - MongoDB Atlas)
  • npm or yarn
  • Modern web browser

Installation

1. Clone/Extract Project

cd project

2. Install Dependencies

npm install

3. Setup Environment

cp .env.example .env

Edit .env file:

MONGODB_URI=mongodb://localhost:27017/internship-tracker
JWT_SECRET=your-secret-key-change-in-production
PORT=3000

4. Start MongoDB (if local)

# Windows
mongod

# macOS/Linux
mongod --dbpath /path/to/data

5. Start Backend Server

npm start
# or for development with auto-reload
npm run dev

Backend will run on: http://localhost:3000

6. Open Frontend

# Open browser and go to:
http://localhost:3000/frontend/index.html

# Or open directly:
frontend/index.html

πŸ“ Project Structure

project/
β”œβ”€β”€ 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

πŸ”‘ Demo Credentials

Pre-loaded Test Account

Email: demo@example.com
Password: demo123

Or create a new account during signup.


🎨 Key Features Walkthrough

1. Dashboard (Home)

  • 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

2. Tracker

  • 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

3. Analytics

  • 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

4. Add Application

  • Comprehensive form with validation
  • Auto skill match calculation
  • Company notes and recruiter info
  • Interview scheduling
  • Tags and status management

Access: "Add Application" button

5. Profile & Settings

  • User profile management
  • Skills management (add/remove)
  • Preferences (salary, roles, companies)
  • Account settings
  • Password management

Access: Profile β†’ Profile page


πŸ—„οΈ Database Collections

Users Collection

{
  "_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"]
  }
}

Applications Collection

{
  "_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
}

πŸ” API Endpoints

Authentication

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

Applications

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

Analytics

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

πŸ› οΈ Advanced MongoDB Features Used

1. Aggregation Pipeline (Skills Analysis)

// Find top trending skills in applications
db.applications.aggregate([
  { $match: { userId: ObjectId("...") } },
  { $unwind: "$skillsRequired" },
  { $group: { _id: "$skillsRequired", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

2. Complex Queries with Filters

// 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) }
})

3. Indexes for Performance

db.applications.createIndex({ userId: 1, currentStatus: 1 })
db.applications.createIndex({ userId: 1, appliedDate: -1 })
db.applications.createIndex({ skillMatchPercentage: -1 })

πŸ“Š Sample Analytics Queries

Query 1: Success Rate by Company

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"] } } }
])

Query 2: Skill Gap Analysis

db.applications.aggregate([
  { $unwind: "$skillsRequired" },
  { $match: { "skillsRequired": { $nin: userSkills } } },
  { $group: { _id: "$skillsRequired", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

πŸŽ“ Using for Hackathon Demo

1. Demo Flow (5 minutes)

  1. 0:00-1:00 - Show Dashboard with metrics
  2. 1:00-2:00 - Search/Filter with MongoDB aggregation
  3. 2:00-3:00 - Show Analytics and insights
  4. 3:00-4:00 - Add application demo
  5. 4:00-5:00 - Explain technical excellence

2. Pre-Demo Checklist

  • Backend running on port 3000
  • MongoDB connected
  • Sample data loaded
  • All pages tested
  • Network tab shows API calls
  • Analytics rendering correctly

3. Impressive Points to Highlight

  • βœ… 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

πŸ”§ Customization

Change Brand/Colors

Edit frontend/css/styles.css:

:root {
    --primary-color: #6366f1;  /* Change primary color */
    --secondary-color: #f59e0b;
    ...
}

Add New Analytics Metric

  1. Create new route in backend/server.js
  2. Add corresponding API call in frontend/js/api.js
  3. Create display function in frontend/js/analytics.js

Modify Application Form

Edit frontend/pages/add-application.html and update backend validation in server.js


πŸ“± Mobile Responsiveness

The application is fully responsive:

  • βœ… Mobile (320px+)
  • βœ… Tablet (768px+)
  • βœ… Desktop (1024px+)

Test with Chrome DevTools responsive design mode.


πŸ› Troubleshooting

MongoDB Connection Error

Solution: Ensure MongoDB is running
- Local: mongod command
- Atlas: Check connection string in .env

Port Already in Use

Solution: Change PORT in .env
PORT=3001

Frontend Can't Connect to API

Solution: Check CORS and API_BASE_URL
Edit frontend/js/api.js:
const API_BASE_URL = 'http://localhost:3000/api';

Data Not Loading

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

πŸ“ˆ Performance Optimization

  • βœ… Database indexes on frequently queried fields
  • βœ… Aggregation pipelines for complex analytics
  • βœ… Frontend caching with localStorage
  • βœ… Lazy loading for charts
  • βœ… Efficient DOM manipulation

πŸ”’ Security Features

  • βœ… JWT-based authentication
  • βœ… Password hashing with bcryptjs
  • βœ… CORS enabled
  • βœ… Input validation on backend
  • βœ… Protected routes with auth middleware

πŸš€ Production Deployment

Deploy Backend (Railway/Render)

  1. Push to GitHub
  2. Connect to deployment platform
  3. Set environment variables
  4. Deploy

Deploy Frontend (Vercel/Netlify)

  1. Update API_BASE_URL to production server
  2. Deploy static files
  3. Enable HTTPS

MongoDB Atlas

  1. Create free cluster
  2. Get connection string
  3. Update MONGODB_URI in .env

πŸ“ Future Enhancements

  • 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

🀝 Contributing

Feel free to enhance this project:

  1. Add new features
  2. Improve UI/UX
  3. Optimize queries
  4. Add tests
  5. Fix bugs

πŸ“„ License

MIT License - Use freely for learning and projects


πŸ“ž Support

For issues or questions:

  1. Check troubleshooting section
  2. Review API documentation
  3. Check MongoDB logs
  4. Check browser console

πŸŽ‰ Good Luck with Your Hackathon!

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 βœ…

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors