This Node.js backend API serves as the core component for a WiFi-based attendance system. The system comprises three main user roles: Teacher, Student, and Admin. The API handles various functionalities related to user authentication, course management, session creation, attendance tracking, and more.
View Postman Tests
Table of Contents
The WiFi Attendance System is an innovative project designed to streamline and modernize the process of tracking and managing attendance in educational settings. Leveraging Flutter for the frontend and Node.js for the backend, this system offers a user-friendly interface for teachers, students, and administrators.
-
User Roles:
- Teacher: Manage courses, sessions, and mark attendance
- Student: Join courses, track attendance, and update profile information
- Admin: Create and manage teacher accounts.
-
Local Network Communication: Utilizes mDNS for service advertisement, allowing teachers to broadcast their availability on the local network.
-
Secure Authentication: Implements OTP-based verification for account security.
-
Attendance Tracking: Facilitates easy creation of courses and attendance sessions, providing real-time tracking for both teachers and students.
-
Flexible and Scalable: Easily scalable to accommodate additional features and user roles. The modular backend architecture ensures flexibility.
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
This is an example of how to list things you need to use the software and how to install them.
-
npm
npm install npm@latest -g
-
Docker
docker pull mongo docker run -d -p 27017:27017 --name mongodb mongo
-
Clone the repo
git clone https://github.com/Jasleen8801/proxy-api.git
-
Setting Envrionment Variables
Create a
.env
file in the root directory of the project and add the following variables:SECRET_KEY="YOUR_SECRET_KEY" PORT=3000 MONGODB_USERNAME="YOUR_MONGODB_USERNAME" MONGODB_PASSWORD="YOUR_MONGODB_PASSWORD" MONGODB_URI="YOUR_MONGODB_URI" JWT_SECRET="YOUR_JWT_SECRET" EMAIL_PASSWORD="YOUR_EMAIL_PASSWORD" EMAIL_USERNAME="YOUR_EMAIL_USERNAME" EMAIL="YOUR_EMAIL" NODESERVER="YOUR_NODE_SERVER"
-
Install dependencies
npm install
-
Setup Google Cloud Storage
- Create a Google Cloud Storage bucket
- Create a service account and download the JSON file
- Rename the JSON file to
gcloud_credentials.json
and place it in the root directory of the project
-
Setup MongoDB
- Create a MongoDB Atlas cluster
- Create a database and a collection
- Create a user and add it to the database
- Add the connection string to the
.env
file
-
Add app to your google account
- Go to your google account settings and enable two factor authentication
- Go to the security tab and generate an app password
- Add the app password to the
.env
file
-
Run the server
npm start
To test this backend API using Postman, import the following proxy-api.postman_collection.json
file into Postman.
This roadmap outlines the planned enhancements and features for the WiFi Attendance System. Contributions and feedback are welcomed to help make this project more robust and feature-rich.
- Basic functionality for teachers to create courses, start sessions, and mark attendance.
- Student registration, course enrollment, and attendance tracking.
- Admin functionalities to create and manage teacher accounts.
-
Enhanced Security:
- Implement JWT-based authentication for improved security.
- Encrypt sensitive data stored in the database.
- Implement JWT-based authentication for improved security.
-
User Interface Improvements:
- Enhance the Flutter app UI for a more intuitive user experience.
- Add data visualization for attendance statistics.
-
Email Notifications:
- Send email notifications for account activities (e.g., password reset, session start).
-
Advanced Attendance Analytic:
- Provide detailed analytics and insights into attendance patterns.
- Generate reports for teachers and administrators.
- Provide detailed analytics and insights into attendance patterns.
-
Integration with External Systems:
- Explore integrations with Learning Management Systems (LMS) or other educational platforms.
-
Additional User Roles:
- Add support for additional user roles (e.g., Teaching Assistant, Parent).
-
Support for Multiple Sessions:
- Allow teachers to start multiple sessions for a course.
-
Machine Learning:
- Explore the use of machine learning to automate attendance tracking.
-
Biometric Authentication:
- Explore the use of biometric authentication for enhanced security and complete securing from proxying.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Jasleen Kaur - jasleen88801@gmail.com
Project Link: https://github.com/Jasleen8801/proxy-api
The Flutter app for this project can be found https://github.com/Ab-Abby-19/proxy