Nitra Mitra is an open-source student initiative from NITRA Technical Campus, Ghaziabad aimed at simplifying academic and non-academic life for students.
From syllabus tracking to AI-powered study tools, and from event management to career guidance, everything resides under one open, collaborative platform.
📊 Project Insights
| 🌟 Stars | 🍴 Forks | 🐛 Issues | 🔔 Open PRs | 🔕 Closed PRs | 🛠️ Languages | 👥 Contributors |
- About
- Features
- Screenshots
- Tech Stack
- Getting Started
- Firebase Configuration Setup
- Project Structure
- Contribution Guidelines
- Contributors
- License
Nitra Mitra empowers students with:
- Academic utilities like syllabus tracking, attendance logs, and subject wikis
- AI-powered tools for study assistance and summarization
- Community features for college events, clubs, announcements, and a student marketplace
- Career growth resources like job boards, skill trackers, and mock test modules
It is built by students, for students, and welcomes open-source contributions from beginners to pros.
- 🧾 Syllabus Tracker – Upload & view syllabus (PHP, MySQL)
- 📈 Attendance Monitor – Manual & automated tracking (PHP, JS, MySQL)
- 📘 Subject Wiki – Community-curated subject pages (Markdown + PHP + MySQL)
- 🧪 Lab Report Templates – Submit & download lab formats (PDF, PHP, MySQL)
- 📌 Notice Board – College/PG announcements (PHP, MySQL, JS)
- 🛒 Marketplace – Buy/sell books & accessories (PHP, MySQL, Bootstrap)
- 🧹 Service Rating – Tiffin/laundry ratings (PHP, MySQL)
- 📦 Lost & Found Portal – Report and claim lost items (PHP, Bootstrap)
- 🔍 Open Source Opportunities – GitHub API integration (PHP)
- 💻 IDE Recommendation – Suggest tools by project type (PHP, JS)
- 🧾 Documentation Templates – Quick README/LICENSE generator
- 🔐 Version Control Tips – Git tutorials & cheatsheets
- 📸 Photo Gallery – Event photo uploads (Cloudinary, PHP, JS)
- 🗣️ Club Portal – Manage/join clubs (PHP, MySQL, Bootstrap)
- 🏆 Leaderboard – Competition rankings (PHP, JS, MySQL)
- 📺 Live Sessions – Embedded YouTube/Zoom recordings
- 🧠 AI Study Assistant – Q&A chat (Python, Flask, AI APIs)
- 📄 AI Summary Tool – Intelligent summarization
- 🔤 Text Summarization – Extract insights from notes
- 📁 File Processing – Read & summarize PDFs, TXT, MD
- ❓ Question Generation – Auto-generate practice questions
- ✨ Notes Enhancement – Smarter, extended note prep
- 🧑💼 Job Board – Off-campus job postings
- 🎯 Skill Tracker – Track skill progress (PHP, Chart.js)
- 📈 Mock Test Section – MCQs with scoring
- 🗂️ Career Resource Library – Preparation docs & guides
- 🌙 Dark Mode – Better nighttime UX
- 🌐 Multi-language Support – Localized UI
- 🧑🎓 Student Dashboard – Centralized hub
- 🔔 Push Notifications – OneSignal or JS polling
This project is now OFFICIALLY accepted for:
🌟 Exciting News...
🚀 This project is now an official part of GirlScript Summer of Code – GSSoC 2025! and open source connect india - osci 25 💃🎉💻 We’re thrilled to welcome contributors from all over India and beyond to collaborate, build, and grow with Nitra Mitra. Let’s make learning and career development smarter – together! 🌟👨💻👩💻
👩💻 GSSoC is one of India’s largest 3-month-long open-source programs that encourages developers of all levels to contribute to real-world projects 🌍 while learning, collaborating, and growing together. 🌱
and osci is one of the progam which 15 days long open-source programs that encourages developers of all levels to contribute to real-world projects. #osci #osci25
🌈 With mentorship, community support, and collaborative coding, it's the perfect platform for developers to:
✨ Improve their skills 🤝 Contribute to impactful projects 🏆 Get recognized for their work 📜 Receive certificates and swag!
🎉 I can’t wait to welcome new contributors from GSSoC 2025 to this DevElevate project family! Let’s build, learn, and grow together — one commit at a time. 🔥👨💻👩💻
| Frontend | Backend | Database | AI / ML | APIs |
|---|---|---|---|---|
| HTML, CSS, JS | PHP (Laravel), Python Flask | MySQL | Python, Flask, AI APIs | GitHub API, OpenAI API, OneSignal |
- Node.js (v16 or higher)
- Git for version control
- XAMPP/WAMP for PHP backend (optional)
- Firebase Account for authentication
- Google AI Studio API Key for AI features
- Fork and Clone the Repository
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/<your-username>/vaibhavbabele.github.io.git
cd vaibhavbabele.github.io- Install Dependencies
npm install- Configure API Keys and Services
- See the detailed Firebase Configuration Setup section below
- Set up Google AI Studio API key for AI features
- Configure domain restrictions for all services
# Serve locally with GitHub Pages structure
npx serve .
# Visit: http://localhost:3000# Copy project to htdocs/www folder
# Visit: http://localhost/vaibhavbabele.github.io/# Python 3
python -m http.server 8000
# Visit: http://localhost:8000Create .env file in root directory:
# Firebase Configuration
FIREBASE_API_KEY=your_firebase_api_key
FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=123456789
FIREBASE_APP_ID=your_app_id
# AI Services
GEMINI_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_key
# Other Services
ONEsIGNAL_APP_ID=your_onesignal_app_id
ONEsIGNAL_REST_API_KEY=your_onesignal_rest_api_keyUpdate your Firebase Security Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Simple rule: Allow all authenticated users to read/write
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}- Push your changes to the
mainbranch - Go to repository Settings → Pages
- Select source: "Deploy from a branch"
- Choose branch:
mainand folder:/ (root) - Your site will be available at:
https://your-username.github.io/vaibhavbabele.github.io
- Add your domain to
CNAMEfile - Configure DNS settings with your domain provider
- Update Firebase authorized domains
- Update API key domain restrictions
# Add upstream remote
git remote add upstream https://github.com/VAIBHAVBABELE/vaibhavbabele.github.io.git
# Fetch latest changes
git fetch upstream
# Merge changes
git checkout main
git merge upstream/main
# Push to your fork
git push origin mainProblem: "Firebase: Error (auth/unauthorized-domain)" Solution:
- Go to Firebase Console → Authentication → Settings
- Add your domain to "Authorized domains"
- For localhost: Add
localhostand127.0.0.1 - For GitHub Pages: Add
your-username.github.io
Problem: "Firebase: Error (auth/api-key-not-valid)" Solution:
- Check your Firebase config in
js/firebase-config.js - Verify API key is correct
- Ensure domain restrictions are properly set
Problem: AI assistant not responding Solution:
- Check browser console for API key errors
- Verify Google AI Studio API key is valid
- Check domain restrictions in Google AI Studio
- Ensure API quota hasn't been exceeded
Problem: "CORS error" or "Network error" Solution:
- Check if backend is running (if using server mode)
- Verify CORS settings in backend
- Try switching to client mode in settings
Problem: Site not loading on GitHub Pages Solution:
- Check repository Settings → Pages
- Ensure source is set to "Deploy from a branch"
- Verify
index.htmlis in root directory - Check for any build errors in Actions tab
Problem: Custom domain not working Solution:
- Verify
CNAMEfile contains your domain - Check DNS settings with domain provider
- Update Firebase authorized domains
- Update API key domain restrictions
Problem: Local server not working Solution:
# Try different port
python -m http.server 8001
# Or use Node.js serve
npx serve . -p 3000
# Or use PHP built-in server
php -S localhost:8000Problem: PHP features not working locally Solution:
- Use XAMPP/WAMP for PHP support
- Copy project to
htdocsorwwwfolder - Access via
http://localhost/your-project/ - Check PHP error logs
Problem: Site not responsive on mobile Solution:
- Check viewport meta tag in HTML
- Verify CSS media queries are working
- Test on different devices/browsers
- Use browser dev tools mobile view
- Check Issues: Search existing GitHub Issues
- Create Issue: If problem persists, create new issue with:
- Error messages
- Steps to reproduce
- Browser/device information
- Screenshots if applicable
- Community: Join our discussions for help
- Documentation: Check CONTRIBUTION.md for contribution guidelines
- Fork the repository
- Clone your fork locally
- Install dependencies (
npm install) - Set up Firebase project and get API keys
- Update
js/firebase-config.jswith your Firebase config - Add your domain to Firebase authorized domains
- Test locally with
npx serve . - Push changes and create a Pull Request
- Set up Firebase project with proper security rules
- Configure domain restrictions for all APIs
- Set up GitHub Pages deployment
- Configure custom domain (if applicable)
- Set up monitoring and analytics
- Review and merge contributor PRs
- Firebase security rules configured
- API keys have domain restrictions
- No sensitive data in public repository
- HTTPS enforced for all services
- Regular security updates applied
- Google Cloud Console account
- Firebase project created
- Node.js and npm installed
-
Create Firebase Project
- Go to Firebase Console
- Click "Create a project" or "Add project"
- Enter project name (e.g., "nitra-mitra")
- Enable/disable Google Analytics as needed
- Click "Create project"
-
Enable Required Services
- Authentication: Go to Authentication → Sign-in method → Enable Email/Password
- Firestore Database: Go to Firestore Database → Create database → Start in test mode
- Storage: Go to Storage → Get started → Start in test mode
- Hosting: Go to Hosting → Get started (optional for deployment)
- Go to Project Settings (gear icon) → General tab
- Scroll down to "Your apps" section
- Click "Add app" → Web app (</> icon)
- Register app with a nickname
- Copy the Firebase configuration object
Create a .env file in your project root:
# Firebase Configuration
FIREBASE_API_KEY=your_api_key_here
FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_id
FIREBASE_MEASUREMENT_ID=your_measurement_id
# Other API Keys
OPENAI_API_KEY=your_openai_api_key
GITHUB_TOKEN=your_github_token
ONESIGNAL_APP_ID=your_onesignal_app_idCreate js/firebase-config.js:
// Firebase configuration
const firebaseConfig = {
apiKey: process.env.FIREBASE_API_KEY || "your_api_key_here",
authDomain: process.env.FIREBASE_AUTH_DOMAIN || "your_project_id.firebaseapp.com",
projectId: process.env.FIREBASE_PROJECT_ID || "your_project_id",
storageBucket: process.env.FIREBASE_STORAGE_BUCKET || "your_project_id.appspot.com",
messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID || "your_sender_id",
appId: process.env.FIREBASE_APP_ID || "your_app_id",
measurementId: process.env.FIREBASE_MEASUREMENT_ID || "your_measurement_id"
};
// Initialize Firebase
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
import { getStorage } from 'firebase/storage';
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);
export const storage = getStorage(app);-
Navigate to Google Cloud Console
- Go to Google Cloud Console
- Select your Firebase project
-
API Key Restrictions
- Go to "APIs & Services" → "Credentials"
- Find your Firebase API key
- Click on the key to edit
- Under "Application restrictions":
- Select "HTTP referrers (web sites)"
- Add your domains:
https://yourdomain.com/* https://www.yourdomain.com/* http://localhost:3000/* (for development) http://127.0.0.1:3000/* (for development)
-
Firebase Security Rules
Firestore Rules (firestore.rules):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Simple rule: Allow all authenticated users to read/write
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}Storage Rules (storage.rules):
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
// Simple rule: Allow all authenticated users to read/write
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}- Authentication Domain Restrictions
- Go to Firebase Console → Authentication → Settings
- Under "Authorized domains", add only your production domains
- Remove
localhostfor production
IMPORTANT: Set API Key Domain Restrictions
For Firebase API Key:
-
Go to Google Cloud Console
-
Select your Firebase project
-
Navigate to "APIs & Services" → "Credentials"
-
Find your Firebase API key and click on it
-
Under "Application restrictions":
- Select "HTTP referrers (web sites)"
- Add your domains:
https://yourdomain.com/* https://www.yourdomain.com/* http://localhost:3000/* (for development) http://127.0.0.1:3000/* (for development) https://your-username.github.io/* (for GitHub Pages)
-
Click "Save"
-
Firestore Database Indexes
Create the required composite indexes for optimal performance:
For Assignments Collection: Click this link to create the index:
https://console.firebase.google.com/v1/r/project/project-7a943/firestore/indexes?create_composite=ClFwcm9qZWN0cy9wcm9qZWN0LTdhOTQzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9hc3NpZ25tZW50cy9pbmRleGVzL18QARoKCgZ1c2VySWQQARoNCgljcmVhdGVkQXQQAhoMCghfX25hbWVfXxACFor Grades Collection: Click this link to create the index:
https://console.firebase.google.com/v1/r/project/project-7a943/firestore/indexes?create_composite=Ckxwcm9qZWN0cy9wcm9qZWN0LTdhOTQzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9ncmFkZXMvaW5kZXhlcy9fEAEaCgoGdXNlcklkEAEaDQoJY3JlYXRlZEF0EAIaDAoIX19uYW1lX18QAgFor Attendance Collection: Click this link to create the index:
https://console.firebase.google.com/v1/r/project/project-7a943/firestore/indexes?create_composite=ClBwcm9qZWN0cy9wcm9qZWN0LTdhOTQzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9hdHRlbmRhbmNlL2luZGV4ZXMvXxABGgoKBnVzZXJJZBABGg0KCWNyZWF0ZWRBdBACGgwKCF9fbmFtZV9fEAIFor Goals Collection: Click this link to create the index:
https://console.firebase.google.com/v1/r/project/project-7a943/firestore/indexes?create_composite=Cktwcm9qZWN0cy9wcm9qZWN0LTdhOTQzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9nb2Fscy9pbmRleGVzL18QARoKCgZ1c2VySWQQARoNCgljcmVhdGVkQXQQAhoMCghfX25hbWVfXxACFor StudyTime Collection: Click this link to create the index:
https://console.firebase.google.com/v1/r/project/project-7a943/firestore/indexes?create_composite=Ck9wcm9qZWN0cy9wcm9qZWN0LTdhOTQzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9zdHVkeVRpbWUvaW5kZXhlcy9fEAEaCgoGdXNlcklkEAEaDQoJY3JlYXRlZEF0EAIaDAoIX19uYW1lX18QAg📋 Steps to Fix Database Index Issues:
- Click each link above to create the required indexes
- Wait for indexes to build (this may take a few minutes)
- Test your queries to ensure they work properly
- Monitor Firebase Console for any index-related errors
# .env.development
FIREBASE_API_KEY=your_dev_api_key
FIREBASE_PROJECT_ID=your_dev_project_id
# ... other dev configs# .env.production
FIREBASE_API_KEY=your_prod_api_key
FIREBASE_PROJECT_ID=your_prod_project_id
# ... other prod configs-
Never commit API keys to version control
- Add
.envto.gitignore - Use environment variables in production
- Add
-
Use Firebase App Check (Recommended)
- Go to Firebase Console → App Check
- Register your app
- Enable App Check for your services
-
Monitor API Usage
- Set up billing alerts in Google Cloud Console
- Monitor usage in Firebase Console
-
Regular Security Audits
- Review Firebase Security Rules regularly
- Update API key restrictions as needed
- Monitor authentication logs
Common Issues:
- CORS errors: Check domain restrictions in Google Cloud Console
- Authentication failures: Verify API keys and domain settings
- Permission denied: Check Firestore/Storage security rules
- API quota exceeded: Monitor usage and set up billing alerts
Debug Steps:
- Check browser console for Firebase errors
- Verify API key restrictions match your domain
- Test with Firebase emulator for local development
- Check Firebase Console logs for server-side errors
├── .github/ # GitHub workflows and automation
│ └── update-leaderboard.yml
├── backend/ # Backend logic and integrations
├── docs/ # Auto-generated contribution logs
├── favicon/ # Favicon assets
├── games/ # Game-related HTML/CSS/JS files
├── images/ # Static images (e.g., logos, UI assets)
├── js/ # JavaScript enhancements and features
├── node_modules/ # Node dependencies
│
├── pages/ # Main standalone HTML pages
│ ├── assistant.* # AI Assistant UI (HTML/CSS/JS/ Setup instructions/Assistant usage guide)
│ ├── certificate.* # Certificate (HTML/CSS/JS)
│ ├── summary.* # summary (HTML/CSS/JS)
│ ├── pr-contribution # pr-contribution (HTML/CSS/JS)
│ ├── 404.html
│ ├── announcement-table.html
│ ├── cgpa-calculator.html
│ ├── contact.html
│ ├── cursor.css # Snake trail cursor
│ ├── cursor.js # Snake trail cursor animation
│ ├── floating-button.* # Floating button styles and logic
│ ├── floating-button.* # Floating button styles and logic
│ ├── footer.css # Footer styling
│ ├── gateway.html
│ ├── infrastructure.html
│ ├── quantum.html
│ ├── resorces.html
│ ├── subject.html
│ ├── gallery.html
│ ├── paper.html
│ ├── paper.css
│ ├── privacy.html
│ ├── privacy.css
│ ├── terms.html
│ ├── team.css
│ ├── test.html
│ └── user-experience-table.html
│
├── .gitignore # Git ignore rules
├── .htaccess / .htaccess.backup # Server configuration files
├── .env # Environment variables (Firebase API keys, etc.)
├── .env.development # Development environment variables
├── .env.production # Production environment variables
├── firestore.rules # Firestore security rules
├── storage.rules # Firebase Storage security rules
├── CNAME # Custom domain setup
├── eslint.config.js # ESLint configuration
├── index.html # Landing page
├── index.css # Landing page
├── index.js # Landing page
├── LICENSE # Project license
├── README.md # Project overview and instructions
├── CONTRIBUTION.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Contributor behavior rules
├── DEPLOYMENT.md # Deployment instructions
├── CONTACT_FORM_SETUP.md # Contact form integration guide
├── SECURITY_IMPROVEMENTS.md # Security enhancement documentation
├── PR_DESCRIPTION_FINAL.md # Final PR description template
├── MERGED_PRS.md # Auto-updated list of merged PRs
├── LEADERBOARD.md # Auto-updated contributor leaderboard
├── package.json # Project metadata and scripts
└── package-lock.json # Dependency lock file
⭐ Stargazers
🍴 Forkers
We welcome frontend, backend, AI, and design contributions.
See CONTRIBUTION.md for details.
🙌 👤 Contributors
Thank you once again to all our contributors who has contributed to Nitra Mitra! Your efforts are truly appreciated. 💖👏
See the full list of contributors and their contributions on the GitHub Contributors Graph.
Licensed under the MIT License.
If you find this project helpful, please give it a star! ⭐
| Role | Name | GitHub Profile | LinkedIn Profile |
|---|---|---|---|
| Project Admin | Vaibhav Babele | vaibhavbabele.github.io | vaibhavbabele |
| Mentor 1 | Anupriya yadav | camren88 | anupriya-yadav |
| Mentor 2 | meet arora | meetarora10 | meet-arora |
| Mentor 3 | Harsh Saini | Harshsaini001 | harsh-saini |
| Mentor 4 | KIRUTHIGA C M | kiruthigacm | kiruthiga-c-m |
| Mentor 5 | Shashank Gupta | ShashankScript | shashank-gupta |
|
VAIBHAV BABELE |
Made with ❤️ by NITra MITra
Report Bug • Request Feature • Documentation