Project Overview
This project is a web-based platform where teachers and students can interact, create rooms (like virtual classrooms), and submit assignments. It features authentication for both students and teachers, room management, and assignment submission with online code compilation. A core feature is the ability for students to submit programming assignments, generate well-formatted PDFs of their code and its output, and take printouts. This project is built using the MERN stack (MongoDB, Express, React, Node.js).
Key Features
- User Authentication:Roles: Two types of users—students and teachers. Teachers can create and manage rooms, while students can join rooms and submit assignments.JWT-based authentication: Both students and teachers log in using JSON Web Tokens (JWTs) to ensure secure access to their respective features.Role-specific access: Teachers can create rooms, while students can join rooms and submit assignments. Different functionalities are accessible based on the role of the logged-in user.
- Room Management:Create Rooms: Teachers can create rooms for their students.Join Rooms: Students can join rooms using the room name (previously room ID).Room Data: The platform tracks which students are in which rooms, allowing the teacher to manage submissions within a specific room.
- Assignment Submission:Code Editor: Students can write, save, and submit code assignments online using a built-in code editor.PDF Generation: Once a student submits an assignment, the platform automatically generates a well-formatted PDF containing both the code and its output. This PDF can be printed or downloaded.Multiple Questions: Each assignment can have multiple questions, and each question can have multiple code snippets and outputs.
- Backend:Node.js with Express: Provides REST API endpoints for managing authentication, rooms, and assignments.MongoDB: Stores user data (name, email, role, etc.), room data, and assignment data.JWT Authentication Middleware: Used to protect routes, ensuring that only authenticated users can access certain functionalities (e.g., creating or joining rooms).
- Frontend:React.js: Provides the user interface for logging in, signing up, creating rooms, joining rooms, and submitting assignments.Axios: Used for making HTTP requests to the backend APIs for tasks like login, signup, room management, and assignment submission.
- Judge 0 = api is used to generate code output.