VisionAttend is a modern, frictionless facial recognition attendance system. Built with performance and elegance in mind, it replaces traditional roll calls and ID badges with a touchless, highly accurate camera-based authentication flow.
The system is split into two primary environments:
- Kiosk Interface: A public-facing, always-on camera terminal where students simply stand in front of the lens to be marked present.
- Admin Dashboard: A secure portal for administrators to register new students, monitor daily attendance logs, manually override records, and perform database cleanup.
By leveraging advanced deep learning models for face extraction, the application handles recognition locally and securely verifies identities against a high-performance vector database.
VisionAttend is designed as a decoupled full-stack application.
Frontend (Client)
- Next.js 16 (App Router): Fast, server-rendered React framework.
- React-Webcam: For direct, in-browser video streaming and image capture.
- Tailwind CSS 4: For rapid, utility-first styling and creating the refined, editorial UI aesthetic.
Backend (API Server)
- FastAPI: A high-performance, asynchronous Python web framework for handling incoming requests and image processing.
- DeepFace (Facenet Model): Open-source face recognition library. We utilize the
Facenetmodel coupled with theopencvdetector backend for rapid point-blank alignment and embedding extraction. - PostgreSQL w/ pgvector: The core database. Rather than storing massive image files, the system stores 128-dimensional mathematical representations (embeddings) of faces.
pgvectorallows for lightning-fast cosine distance closest-neighbor searches to match live camera feeds against registered students.
visionattend/
├── backend/ # Python FastAPI server and DeepFace integration
├── frontend/ # Next.js web application (Kiosk & Admin views)
└── README.md # You are hereBecause this is a decoupled application, you will need to run both the backend API server and the frontend web dev server simultaneously.
Navigate to the backend/ directory, set up your Python environment, and start the FastAPI server.
Note: You will need a PostgreSQL instance with the
pgvectorextension enabled (e.g., Neon.tech) configured in a.envfile.
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8000In a new terminal split, navigate to the frontend/ directory, install Node dependencies, and start Next.js.
cd frontend
npm install
npm run devThe Kiosk will be available at http://localhost:3000 and the Admin dashboard at http://localhost:3000/admin.
- Registration: An administrator opens the Admin portal, types in a student's name and roll number, and uses the webcam to capture a clear baseline photo.
- Processing: The backend receives this photo, extracts the unique facial embedding using DeepFace, and stores it in the Postgres database alongside the student's details.
- Recognition (Kiosk): When a student walks up to the Kiosk, the camera captures a frame and sends it to the API.
- Matching: The backend extracts the live embedding and runs a cosine distance query against the database using
pgvector. If a match is found within the confidence threshold, attendance is marked for the day.
MIT License. Feel free to fork, modify, and deploy for your own institutional needs.