A full-stack MERN application designed to modernize and streamline the academic grading process for educational institutions. This platform provides distinct, role-based dashboards and functionalities for Students, Teachers, and Admins.
The application is built with a fully responsive user interface using Material-UI and features a secure backend API, bringing efficiency and clarity to grade management.
Live Demo: https://student-grading-system-frontend.vercel.app/
- View Grades: Students can log in to view a clean, organized list of their grades for all enrolled courses, presented as cards on mobile and a table on desktop.
- Secure Access: Each student is restricted to viewing only their own grades.
- Course Overview: Teachers can view a list of all courses they are assigned to in a responsive card layout.
- Grade Management:
- Add Grades: Teachers can add new grades for any student enrolled in their courses via a simple modal form.
- View Course Grades: Teachers can navigate to a detailed page to view a complete table of all grades for a specific course they teach.
- Enroll Students: Teachers have the ability to enroll students into their courses.
- Full User Management (CRUD):
- Create: Admins can create new user accounts (students, teachers, or other admins) through a modal form.
- Read & Filter: Admins can view a responsive table of all users in the system and filter the list by role (student, teacher, admin).
- Update: Admins can edit any user's details, including their name, email, and role.
- Delete: Admins can delete any user from the system with a confirmation step.
- Full Course Management (CRUD):
- Create: Admins can create new courses and assign them to any teacher from a dropdown list.
- Read & Filter: Admins can view a responsive list of all courses and filter them by teacher or semester.
- Update: Admins can edit any course's details, including its name, description, and assigned teacher.
- Delete: Admins can delete any course from the system with confirmation.
- Student Enrollment: Admins can access an enrollment page for any course to add or manage enrolled students.
- Fully Responsive Design: The entire application, from the landing page to the dashboards, is optimized for all screen sizes.
- Dynamic Theming: Users can instantly switch between a light and dark theme with smooth transitions.
- Modern Animations: The UI is enhanced with animations for page transitions, text effects, and interactive elements, powered by Framer Motion and GSAP.
- Framework: React (Vite)
- UI Library: Material-UI (MUI)
- Routing: React Router
- State Management: React Context API
- API Client: Axios
- Animations: Framer Motion, GSAP
- Framework: Node.js, Express.js
- Database: MongoDB (with Mongoose)
- Authentication: JSON Web Tokens (JWT)
- Password Hashing: bcrypt.js
- Platform: Vercel
To get a local copy up and running, follow these steps.
- Node.js (v18 or later recommended)
- npm (comes with Node.js)
- A MongoDB Atlas account (free tier available) or a local MongoDB installation
-
Clone the Repository
git clone [https://your-github-repository-url.git](https://your-github-repository-url.git) cd student-grading-system -
Setup the Backend
- Navigate into the backend directory:
cd backend - Install the necessary NPM packages:
npm install
- Create a
.envfile in thebackenddirectory. Copy the contents of.env.example(if provided) or create it manually with the following variables:ReplaceMONGO_URI=your_mongodb_atlas_connection_string JWT_SECRET=your_super_secret_key_for_jwt_signing PORT=5000
your_mongodb_atlas_connection_stringwith your actual connection string from MongoDB Atlas, ensuring you replace<password>with your database user's password. Replaceyour_super_secret_key_for_jwt_signingwith a long, random, secure string.
- Navigate into the backend directory:
-
Setup the Frontend
- Navigate into the frontend directory:
cd ../frontend - Install the necessary NPM packages:
npm install
- Create a
.envfile in thefrontenddirectory with the following variable:(This tells the frontend where to find the backend API during local development.)VITE_API_URL=http://localhost:5000
- Navigate into the frontend directory:
-
Start the Backend Server
- Open a terminal in the
backenddirectory. - Run the command:
node server.js
- You should see output indicating the server is running on port 5000 and connected to MongoDB.
- Open a terminal in the
-
Start the Frontend Development Server
- Open a separate terminal in the
frontenddirectory. - Run the command:
npm run dev
- Open your web browser and navigate to the local URL provided (usually
http://localhost:5173).
- Open a separate terminal in the
You should now be able to interact with the application locally.