A MERN-based education management platform with role-based dashboards for students, teachers, and admins—covering classes, enrollments with payments, assignments, approvals, and comprehensive admin controls.
This repository contains the client-side React application.
Live Preview:
https://edu-manage-ed474.web.app/
- Project Description
- Features
- Technology Used
- Installation
- Usage
- Configuration
- Contributing
- Testing
- License
- Contact / Support
EduManage (Client) is an advanced, responsive ReactJS web application for education management. It connects students, teachers, and admins in a seamless, interactive environment to manage classes, assignments, enrollment, and platform-wide administration with a focus on usability, security, and performance.
The client interacts with a separate backend API for data persistence, authentication, and payments.
- Modern Responsive Design: Fully responsive layout using CSS Grid and Flexbox.
- Routing: Client-side navigation with React Router.
- Role-Based Dashboards: Dedicated dashboards for students, teachers, and admins with tailored functionality.
- Secure Authentication: Email/password and Google authentication with JWT-based protected routes.
- Class Management: Teachers can add, update, and delete classes, pending admin approval before listing.
- Class Enrollment & Payment: Students can enroll and pay for classes; enrollment and transactions are tracked.
- Assignment Workflow: Teachers create assignments; students submit and track progress in real time.
- Teaching Application: Users can apply to become teachers; admins review and approve.
- Admin Control: Admins approve/reject teacher applications and classes, manage users, and oversee platform data.
- Pagination and Search: Paginated tables/cards and server-side search for efficient data handling.
- Accessibility: Focus states and screen reader-friendly markup.
- Smooth Animations: Subtle transitions for interactive elements.
- Security Best Practices: Sensitive keys (Firebase, etc.) are secured with environment variables.
- React — Frontend library for building user interfaces
- React Router DOM — Declarative routing for React applications
- Firebase Authentication — Email/Password and Google sign-in
- JSON Web Tokens (JWT) — Client-side handling for protected routes
- React Hook Form — Form handling and validation
- Axios/Fetch — HTTP requests to the backend API
- CSS3 — Styling and layout using Grid and Flexbox
- Git (to clone the repository)
- Node.js and npm (for dependency management)
- A modern web browser (Chrome, Edge, Firefox, Safari, etc.)
-
Clone the repository:
git clone https://github.com/usernayeem/edu-manage.git
-
Navigate to the project directory:
cd edu-manage -
Install dependencies:
npm install
-
Create and configure environment variables (see Configuration).
-
Run locally:
npm run dev
This will start the development server. The app will be available at
http://localhost:5173.
-
Sign In / Sign Up: Authenticate via Email/Password or Google to access role-based dashboards.
-
Students: Browse approved classes, enroll and pay, view enrolled classes, and submit assignments.
-
Teachers: Apply to become a teacher, create and manage classes, post assignments, and review submissions.
-
Admins: Review and approve teacher applications and classes, manage users/roles, and monitor platform activity.
-
Pagination & Search: Use built-in pagination and search to navigate large datasets efficiently.
-
Admin Demo Credentials:
- Email/Password:
- Email:
nayeem.edumanage@mailinator.com - Password:
qwerty123
- Email:
- Google:
- Email:
nayeem.edumanage@gmail.com - Password:
qwertynayeem
- Email:
- Email/Password:
-
Environment variables (create a
.envfile in the project root):VITE_API_BASE_URL=http://localhost:5173 VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain VITE_FIREBASE_PROJECT_ID=your_firebase_project_id VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id VITE_FIREBASE_APP_ID=your_firebase_app_id
-
Styling: Modify the main stylesheet (e.g.,
index.css) or your chosen UI utility/classes to customize design.
Contributions are welcome! If you would like to contribute to this project, follow these steps:
-
Fork the Repository:
- Navigate to the repository you want to contribute to.
- Click the Fork button in the upper right corner to create a personal copy of the project in your GitHub account.
-
Clone the Forked Repository:
-
Open your forked repository on GitHub.
-
Click the "Code" button to get the HTTPS or SSH URL of your forked repository.
-
Open your terminal or command prompt.
-
Use the
git clonecommand followed by the URL you copied to clone the repository to your local machine:git clone https://github.com/yourusername/edu-manage.git
Replace
yourusernamewith your own Github username. -
Navigate into the cloned repository directory:
cd edu-manage
-
-
Create a New Branch: Switch to a new branch where you'll make your changes. You can do this using the following command:
git checkout -b my-branch
Replace
my-branchwith a branch name that describes your work. -
Make Your Changes: Make the necessary changes to the codebase. You can add, modify, or delete files as needed.
-
Stage Your Changes: You can use
git add <filename>to stage specific files orgit add .to stage all changes.git add . -
Commit Your Changes: Commit your staged changes with a descriptive message. Follow the imperative style for commit messages (e.g., “Fix bug” instead of “Fixed bug”). For example:
git commit -m "my commit message"Replace
my commit messagewith a meaningful message for your commit. -
Push to Your Branch: Push your changes to the branch you created:
git push -u origin my-branch
Replace
my-branchwith your branch name. -
Submit a Pull Request:
- Navigate to your forked repository on GitHub.
- Click the "Compare & pull request" button.
- Review the changes you're proposing and ensure they are accurate.
- Add a descriptive title and a detailed description of your contribution.
- Click the "Create pull request" button to submit your contribution for review.
-
Automated Testing:
The project can use Jest and React Testing Library for unit and component testing (if configured). -
Run Tests:
npm test -
For manual testing:
- Open the app in different browsers and devices.
- Test keyboard navigation and accessibility.
- Check responsiveness on various screen sizes.
- Verify protected routes and role-based access control (student/teacher/admin).
- Exercise CRUD flows (classes, assignments, enrollments) and confirm notifications.
This project is licensed under the MIT License.
- Author: Md Nayeem
- Repository: https://github.com/usernayeem/edu-manage
- Issues: Please use the GitHub Issues page for bug reports or feature requests.