How rajkjain03/vidyavichar-classroom-q-a-sticky-board works
VidyaVichar is a role-based classroom Q&A platform. Teachers and students authenticate, then teachers create classrooms and share join codes; students join classes and post text questions. Teachers review questions, filter by status, update status, or clear a class’s questions. The React client uses Redux for authentication state and calls the Express REST API, whose controllers enforce domain rules and use Mongoose models backed by MongoDB. The README documents the broader client-server and role-based design; some frontend request wiring was not sampled.
Main entry points: server.js API server · ClassroomPage.js Class Q&A · AuthPage.js Authentication · DashboardPage.js Class dashboard
Components 24
React client
- App routing
frontend/src/App.js - Authentication
frontend/src/pages/AuthPage.js - Class dashboard
frontend/src/pages/DashboardPage.js - Class Q&A
frontend/src/pages/ClassroomPage.js - Question form
frontend/src/components/QuestionForm.js - Question card
frontend/src/components/QuestionCard.js - Question filters
frontend/src/components/FilterControls.js - Route guard
frontend/src/components/PrivateRoute.js - Auth state
frontend/src/features/authSlice.js
Express API
- API server
backend/server.js - User routes
backend/src/routes/userRoutes.js - Classroom routes
backend/src/routes/classroomRoutes.js - Question routes
backend/src/routes/questionRoutes.js - JWT and role checks
backend/src/middleware/authMiddleware.js
Classroom domain
- User controller
backend/src/controllers/userController.js - Classroom controller
backend/src/controllers/classroomController.js - Question controller
backend/src/controllers/questionController.js
Data persistence
- User model
backend/src/models/userModel.js - Classroom model
backend/src/models/classroomModel.js - Question model
backend/src/models/questionModel.js - Database connection
backend/src/config/db.js
Other components
- Teacher
- Student
- MongoDB
Connections 36
- Teacher → Authentication: authenticates
- Student → Authentication: authenticates
- App routing → Authentication: routes to
- App routing → Route guard: guards pages
- Route guard → Class dashboard: permits access
- Route guard → Class Q&A: permits access
- Authentication → API server: auth requests
- Authentication → Auth state: sets credentials
- Class dashboard → API server: class requests
- Class Q&A → API server: question requests
- Class Q&A → Question form: renders
- Class Q&A → Question card: renders
- Class Q&A → Question filters: renders
- Teacher → Class dashboard: manages classes
- Student → Class dashboard: joins classes
- Student → Question form: asks questions
- Teacher → Question filters: filters questions
- API server → User routes: dispatches
- API server → Classroom routes: dispatches
- API server → Question routes: dispatches
- User routes → JWT and role checks: protects endpoints
- Classroom routes → JWT and role checks: protects endpoints
- Question routes → JWT and role checks: protects endpoints
- User routes → User controller: dispatches
- Classroom routes → Classroom controller: dispatches
- Question routes → Question controller: dispatches
- JWT and role checks → User model: loads user
- User controller → User model: reads and writes
- Classroom controller → Classroom model: reads and writes
- Question controller → Classroom model: checks classroom
- Question controller → Question model: reads and writes
- API server → Database connection: connects database
- Database connection → MongoDB: connects
- User model → MongoDB: persists users
- Classroom model → MongoDB: persists classes
- Question model → MongoDB: persists questions