Skip to content

er-balaa/EduHub

Repository files navigation

Lets Connect – Classroom Management System

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.


🚀 Features

🔐 Authentication

  • Firebase Authentication
  • User registration & login
  • Role-based access (Tutor / Student)
  • Secure user profiles

🏫 Classroom Management

  • Tutors can create classrooms with unique security keys
  • Students can join using classroom keys
  • Real-time classroom membership
  • Role-based permissions

📄 Document Management

  • 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)

📝 Assignment System

  • Create assignments with due dates and points
  • Student submissions and tracking
  • Grading support
  • Due date monitoring
  • Dynamic credit validation

🧠 Quiz System

  • Create quizzes with multiple question types
  • Timed quizzes for students
  • Automatic evaluation
  • Attempt and response tracking

🎨 UI / UX

  • Responsive UI with Tailwind CSS
  • Clean, modern design
  • Mobile-friendly layout

🛠 Tech Stack

  • 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

✅ Prerequisites

  • Node.js (v16+)
  • npm or yarn
  • Firebase project (Auth + Storage enabled)
  • Supabase project (PostgreSQL)

⚙️ Setup Instructions

1️⃣ Install Dependencies

npm install

4️⃣ Database Setup

  1. Open Supabase SQL Editor

  2. Run database-schema.sql

  3. This creates:

    • users
    • classrooms
    • classroom_members
    • documents
    • assignments
    • assignment_submissions
    • quizzes
    • quiz_questions
    • quiz_options
    • quiz_attempts
    • quiz_responses
    • RLS policies

5️⃣ Firebase Storage Rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /documents/{classroomId}/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

7️⃣ Run the Application

Development

npm start

Production

npm run build
npm run start:prod

👩‍🏫 Tutor Workflow

  1. Sign up as Tutor
  2. Create classroom
  3. Share security key
  4. Upload documents
  5. Create assignments & quizzes

👨‍🎓 Student Workflow

  1. Sign up as Student
  2. Join classroom using key
  3. Access documents
  4. Submit assignments
  5. Attend quizzes

📁 Project Structure

src/
├── components/
│   ├── auth/
│   ├── Dashboard.js
│   └── Classroom.js
├── contexts/
│   └── AuthContext.js
├── config/
│   ├── firebase.js
│   └── supabase.js
├── App.js
├── index.js
└── index.css

🔒 Security

  • Row Level Security (RLS)
  • Firebase Authentication
  • Role-based access control
  • Secure file uploads

🤝 Contributing

  1. Fork the repo
  2. Create a new branch
  3. Commit changes
  4. Submit PR

🔮 Future Enhancements

  • Real-time notifications
  • Video conferencing
  • Mobile app
  • Analytics dashboard
  • Gradebook
  • Discussion forums
  • Calendar integration

About

This website is hosted on Render, and it only supports Google login because Render’s free instance does not allow SMTP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors