/proxy-api

Primary LanguageJavaScriptMIT LicenseMIT


Logo

Proxy-API

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
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Flutter App

About The Project

Product Name Screen Shot

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.

Key Features

  • 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.

(back to top)

Built With

  • NodeJS
  • Mongo
  • Express
  • Docker
  • Flutter
  • Dart
  • Shell

(back to top)

Getting Started

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.

Prerequisites

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

(back to top)

Installation

  1. Clone the repo

    git clone https://github.com/Jasleen8801/proxy-api.git
  2. 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"
  3. Install dependencies

    npm install
  4. 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
  5. 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
  6. 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
  7. Run the server

    npm start

(back to top)

Usage

To test this backend API using Postman, import the following proxy-api.postman_collection.json file into Postman.

Run in Postman

(back to top)

Roadmap

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.

Version 1.0.0

  • 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.

Version 1.1.0

  • Enhanced Security:

    • Implement JWT-based authentication for improved security.
    • Encrypt sensitive data stored in the database.
  • 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).

Version 1.2.0

  • Advanced Attendance Analytic:

    • Provide detailed analytics and insights into attendance patterns.
    • Generate reports for teachers and administrators.
  • 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).

Version 2.0.0

  • 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).

(back to top)

Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Jasleen Kaur - jasleen88801@gmail.com

Project Link: https://github.com/Jasleen8801/proxy-api

(back to top)

Flutter App

The Flutter app for this project can be found https://github.com/Ab-Abby-19/proxy

(back to top)