- Role-based login: Admin / Faculty / Student
- Triple Conflict Detection: Faculty, Room & Section checks
- Real-time updates via Firebase Firestore
- Beautiful dark UI with grid timetable view
- Full admin portal: Faculty, Departments, Rooms, Slot Assignment
- Go to https://console.firebase.google.com
- Click "Create a project"
- Name it:
edusync(or anything) - Enable Google Analytics: Optional
- Click Continue until project is created
- In Firebase Console → Build → Authentication
- Click "Get started"
- Click Email/Password → Enable → Save
- In Firebase Console → Build → Firestore Database
- Click "Create database"
- Choose "Start in test mode" (we'll fix rules later)
- Choose a region close to you (e.g.,
asia-south1for India)
- In Firebase Console → Project Settings (gear icon)
- Scroll to "Your apps" → Click Web icon (
</>) - Register app name:
EduSync Web - Copy the
firebaseConfigobject
Open src/firebase.js and replace:
const firebaseConfig = {
apiKey: "YOUR_API_KEY", // ← paste your values here
authDomain: "YOUR_PROJECT.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT.appspot.com",
messagingSenderId: "YOUR_SENDER_ID",
appId: "YOUR_APP_ID"
};Open terminal in the edusync folder:
# Install all packages
npm install
# Start the app
npm startThe app opens at http://localhost:3000
- Go to http://localhost:3000
- Click Register tab
- Fill in:
- Name:
Admin User - Role:
Admin - Email:
admin@college.edu - Password:
Admin@123
- Name:
- Click Create Account
- You're logged in as Admin!
- In Firebase Console → Firestore → Rules
- Delete everything and paste content from
firestore.rulesfile - Click Publish
As Admin, do this in order:
- Departments → Add CSE, IT, ECE, etc.
- Rooms → Add classrooms and labs
- Faculty → Add faculty with subjects
- Assign Slots → Create timetable entries
| Role | Password | |
|---|---|---|
| Admin | admin@edusync.edu | Admin@123 |
| Faculty | faculty@edusync.edu | Faculty@123 |
| Student | student@edusync.edu | Student@123 |
Register all three, then view each dashboard for different experiences.
edusync/
├── src/
│ ├── context/
│ │ └── AuthContext.js # Login/Logout/User state
│ ├── pages/
│ │ ├── Login.js # Auth page
│ │ ├── Timetable.js # Grid + List view (all roles)
│ │ ├── admin/
│ │ │ ├── AdminDashboard.js
│ │ │ ├── FacultyManagement.js
│ │ │ ├── DepartmentManagement.js
│ │ │ ├── RoomsManagement.js
│ │ │ └── AssignSlot.js # ← CONFLICT CHECKER HERE
│ │ ├── faculty/
│ │ │ └── FacultyDashboard.js
│ │ └── student/
│ │ └── StudentDashboard.js
│ ├── components/
│ │ └── Sidebar.js # Navigation
│ ├── utils/
│ │ └── conflictChecker.js # Triple-check engine
│ ├── firebase.js # Firebase config ← EDIT THIS
│ ├── App.js # Routing
│ └── index.css # Global styles
├── firestore.rules # Security rules
└── package.json
- Dashboard with stats
- Add/Edit/Delete Faculty with specializations
- Add/Edit Departments with sections
- Configure Rooms with amenities
- Assign class slots with real-time triple conflict check
- Full timetable view with filter
- Personal dashboard
- Today's classes
- Weekly teaching load chart
- Subject summary
- Full teaching schedule
- Select section (CSE-A, IT-B, etc.)
- Today's classes with faculty & room info
- Subject summary with teacher names
- Full timetable view
# Install Vercel CLI
npm i -g vercel
# Build the project
npm run build
# Deploy
vercel --prod/users/{uid}
name, email, role, department
/faculty/{id}
name, email, phone, department, subjects[], designation, experience
/departments/{id}
name, code, color, hod, sections[], totalStudents
/rooms/{id}
name, type, capacity, building, floor, hasProjector, hasAC, hasComputers
/slots/{id}
day, period, department, section, subject,
facultyId, facultyName, roomId, roomName, type
Q: "Firebase not initialized" error
→ Check src/firebase.js has your correct config values
Q: Login fails → Make sure Email/Password auth is enabled in Firebase Console
Q: Slots not saving → Check Firestore rules allow writes for admin role
Q: Changes not reflecting in real-time → Firebase should be auto-updating. Refresh if needed.
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18 | Component UI |
| Styling | Custom CSS | Dark theme design |
| Auth | Firebase Auth | Role-based login |
| Database | Firestore | Real-time NoSQL DB |
| Real-time | onSnapshot() | Live sync listeners |
| Routing | React Router v6 | SPA navigation |
| Notifications | react-hot-toast | User feedback |
| Hosting | Vercel/Firebase | Deployment |
EduSync — Built for B.Tech Final Year Project