A comprehensive classroom management system built with React, Firebase Authentication, and Supabase (PostgreSQL). Similar to Google Classroom, it enables tutors to create classrooms, share materials, assign work, and conduct quizzes, while students can join classrooms and participate seamlessly.
- Firebase Authentication
- User registration & login
- Role-based access (Tutor / Student)
- Secure user profiles
- Tutors can create classrooms with unique security keys
- Students can join using classroom keys
- Real-time classroom membership
- Role-based permissions
- Tutors upload PDFs, DOCs, images, etc.
- Students can view and download documents
- Organized document library with metadata
- seen/unseen details(Like whatsapp double tick concept)
- Create assignments with due dates and points
- Student submissions and tracking
- Grading support
- Due date monitoring
- Dynamic credit validation
- Create quizzes with multiple question types
- Timed quizzes for students
- Automatic evaluation
- Attempt and response tracking
- Responsive UI with Tailwind CSS
- Clean, modern design
- Mobile-friendly layout
- Frontend: React 18, React Router DOM
- Authentication: Firebase Auth
- Database: Supabase (PostgreSQL)
- File Storage: Firebase Storage
- Styling: Tailwind CSS
- Icons: Lucide React
- State Management: React Context API
- Node.js (v16+)
- npm or yarn
- Firebase project (Auth + Storage enabled)
- Supabase project (PostgreSQL)
npm install-
Open Supabase SQL Editor
-
Run
database-schema.sql -
This creates:
- users
- classrooms
- classroom_members
- documents
- assignments
- assignment_submissions
- quizzes
- quiz_questions
- quiz_options
- quiz_attempts
- quiz_responses
- RLS policies
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /documents/{classroomId}/{fileName} {
allow read, write: if request.auth != null;
}
}
}Development
npm start- Frontend (internal): 3000
- Backend + App: 5000
- App URL: http://localhost:5000
Production
npm run build
npm run start:prod- Sign up as Tutor
- Create classroom
- Share security key
- Upload documents
- Create assignments & quizzes
- Sign up as Student
- Join classroom using key
- Access documents
- Submit assignments
- Attend quizzes
src/
├── components/
│ ├── auth/
│ ├── Dashboard.js
│ └── Classroom.js
├── contexts/
│ └── AuthContext.js
├── config/
│ ├── firebase.js
│ └── supabase.js
├── App.js
├── index.js
└── index.css
- Row Level Security (RLS)
- Firebase Authentication
- Role-based access control
- Secure file uploads
- Fork the repo
- Create a new branch
- Commit changes
- Submit PR
- Real-time notifications
- Video conferencing
- Mobile app
- Analytics dashboard
- Gradebook
- Discussion forums
- Calendar integration