A comprehensive full-stack application built with the MERN stack (MongoDB, Express, React, Node.js) designed for proctored exam automation and monitoring. The project leverages Firebase for authentication and data storage, ensuring a robust and secure system.
- Frontend
- Backend
- Environment Variables
- Installation
- Usage
- Features
- API Documentation
- Contributing
- License
- Contact
The frontend is developed using React and Vite, providing a responsive and interactive user interface. It integrates with Firebase for authentication and data management.
-
Clone the repository:
git clone https://github.com/yourusername/peamt.git
-
Navigate to the frontend directory:
cd peamt/client
-
Install dependencies:
npm install @reduxjs/toolkit firebase react react-dom react-dotenv react-redux react-router-dom redux-persist
-
Create a
.env
file in theclient
directory and add your environment variables: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 VITE_PRIVATE_DASHBOARD_ID=your_private_dashboard_id VITE_DASHBOARD_PASSWORD=your_dashboard_password
-
Start the development server:
npm run dev
Visit http://localhost:5173
in your browser to access the application. Ensure the backend server is running for a fully functional experience.
The backend is constructed with Node.js and Express, offering a RESTful API, authentication, and data management capabilities.
-
Navigate to the root directory:
cd peamt
-
Install dependencies:
npm install @reduxjs/toolkit axios bcryptjs body-parser cookie-parser cors dotenv express jsonwebtoken lenis mongoose nodemon react-redux three
-
Create a
.env
file in the root directory and add your environment variables:MONGO=your_mongodb_connection_string JWT_SECRET=your_jwt_secret ADMIN=your_admin_mongodb_connection_string
-
Start the development server:
npm run dev
The backend server will be available at http://localhost:3000
by default. Ensure that it is running to allow communication with the frontend.
Ensure the following environment variables are set up correctly:
-
Frontend (.env file):
VITE_FIREBASE_API_KEY
: Firebase API keyVITE_FIREBASE_AUTH_DOMAIN
: Firebase authentication domainVITE_FIREBASE_PROJECT_ID
: Firebase project IDVITE_FIREBASE_STORAGE_BUCKET
: Firebase storage bucketVITE_FIREBASE_MESSAGING_SENDER_ID
: Firebase messaging sender IDVITE_FIREBASE_APP_ID
: Firebase app IDVITE_PRIVATE_DASHBOARD_ID
: Private dashboard ID for access controlVITE_DASHBOARD_PASSWORD
: Password for accessing the private dashboard
-
Backend (.env file):
MONGO
: MongoDB connection stringJWT_SECRET
: Secret key for JSON Web Token (JWT) authenticationADMIN
: Admin MongoDB connection string for administrative tasks
- User Authentication: Secure login and registration using Firebase.
- Responsive Design: Adaptive layout built with React and TailwindCSS.
- State Management: Efficient state management using Redux Toolkit and Redux Persist.
- Routing: Dynamic routing with React Router DOM for seamless navigation.
- API Development: RESTful API endpoints created with Express.
- Authentication: Secure authentication with JWT to protect sensitive routes.
- Data Management: Storage and retrieval of exam data using MongoDB.
- Middleware Integration: Utilizes middleware for body parsing, cookie handling, and Cross-Origin Resource Sharing (CORS).
For comprehensive API documentation, including endpoints, request formats, and response examples, please refer to API Documentation. This will help you understand how to interact with the backend services.
Contributions are welcome! To contribute:
- Fork the repository to create your own copy.
- Create a new branch for your feature or fix:
git checkout -b feature/your-feature
- Make your changes and ensure they adhere to the project’s coding standards.
- Commit your changes with a descriptive message:
git commit -am 'Add new feature or fix'
- Push to your branch:
git push origin feature/your-feature
- Open a Pull Request on GitHub to propose your changes.
This project is licensed under the ISC License. For detailed information, refer to the LICENSE file.
For questions or further information, contact the project maintainer via GitHub or the project's support channels. Your feedback and inquiries are highly valued.
npm install jspdf