PresenSync is a smart attendance system designed to streamline the attendance process using modern technology. It leverages QR codes, facial recognition, and GPS location to ensure a secure and efficient way of marking attendance.
This project is a full-stack application built with a React frontend and a Python (FastAPI) backend. It utilizes Firebase for real-time database and authentication services.
- QR Code Attendance: Generate and scan QR codes for quick and easy attendance marking.
- Facial Recognition: Verifies student identity using facial recognition for added security.
- GPS Verification: Ensures students are within the classroom's vicinity by checking their GPS location.
- Real-time Updates: Attendance data is updated in real-time for teachers and administrators.
- Role-Based Access: Different roles (student, teacher, admin) with specific permissions.
- Admin Dashboard: A comprehensive dashboard for administrators to manage users, classes, and view attendance records.
- Global Notifications: Admins can send notifications to all users.
To get a local copy up and running, follow these simple steps.
- Node.js and npm: Make sure you have Node.js and npm installed. You can download them from nodejs.org.
npm install npm@latest -g
- Python: Ensure you have Python installed. You can download it from python.org.
- Clone the repo:
git clone https://github.com/your_username/PresenSync.git
- Install Frontend NPM packages:
cd PresenSync npm install - Install Backend Python packages:
cd src/backend pip install -r requirements.txt
- Start the Frontend Development Server:
npm run dev
- Start the Backend Server:
cd src/backend uvicorn main:app --reload
@lottiefiles/react-lottie-player@tailwindcss/viteface-api.jsfirebaseframer-motionhtml5-qrcodelottie-reactlucide-reactqrcode.reactreactreact-domreact-lottie-playerreact-router-domtailwind-scrollbarjspdfjspdf-autotablexlsx
Here is a list of the main API endpoints:
GET /: Root endpoint that returns the API status.GET /health: Health check endpoint to verify service and Firebase connection.POST /attendance/mark: Marks student attendance after performing validations.GET /admin/users: (Admin only) Retrieves all user profiles.PUT /admin/users/{uid}/role: (Admin only) Updates the role of a specific user.DELETE /admin/users/{uid}: (Admin only) Deletes a user account and their associated data.POST /admin/notifications/send_global: (Admin only) Sends a global notification to all users.