TriGuard Auth: Face + OTP Login System with Liveness Detection | Django Final Year Project with Source Code

TriGuard Auth: Face + OTP Login System with Liveness Detection | Django Final Year Project with Source Code

A Django login system that won't let anyone in with just a password, or a photo held up to the webcam. Face match, blink-and-turn liveness check, adaptive OTP, plus FAR/FRR evaluation your examiner will actually respect.

Technology Used

Python | Django 5 | OpenCV | face_recognition (dlib) | MediaPipe | pyotp | Django REST Framework | SimpleJWT | PostgreSQL | SQLite | Bootstrap 5 | Chart.js | Docker

codeAj
codeAjVerified
🏆5K+ Projects Sold
Google Review
4991999

Get complete project source code + Installation guide + chat support


Abstract

Passwords get phished. Basic face login gets fooled by a printed photo. This final year project fixes both problems by stacking three checks on top of each other: something you know (a password), something you are (your face), and something you have (a one-time password). And the face check isn't the lazy kind. After your face matches, the system throws a random liveness challenge at you, like blink twice or turn your head left, so a photo or a replayed video simply can't get through.

During enrollment, TriGuard Auth captures five or more webcam frames from different angles and stores only their 128-dimensional face embeddings, encrypted with Fernet. The actual face images are never saved. At login, a risk engine checks your device, IP address and time of day, and if everything looks normal it skips the OTP step. If something looks off, you get the full three-factor treatment.

The project also ships with an evaluation command that calculates False Acceptance Rate (FAR), False Rejection Rate (FRR), accuracy and a confusion matrix on a labelled dataset. So when your guide asks "why did you choose 0.55 as the threshold?", you have a graph to show instead of a shrug.

What This Project Actually Does

Picture a normal login page. You type your email and password. Then, instead of landing on the dashboard, your webcam turns on.

The system compares your face with the encrypted embeddings it stored when you registered. If it's a match, a prompt appears: "Blink twice" or "Smile" or "Turn right". You've got 15 seconds. MediaPipe Face Mesh tracks 468 points on your face and checks whether your eyes actually closed (using the Eye Aspect Ratio) or your head actually turned. A photo can't blink. That's the whole trick, and it works.

After that, depending on how risky the login looks, you either go straight in or get an OTP by email, SMS, or Google Authenticator. Every attempt, successful or not, goes into an audit log. Fail the face match too many times and the system quietly snaps a picture of whoever is sitting there and emails it to the real account owner.

Key Features

Face Enrollment and Matching

  • Captures 5+ angled frames per user during registration, stores only 128-d embeddings generated by face_recognition (dlib), encrypted at rest via common/crypto.py
  • Match threshold is configurable through FACE_MATCH_THRESHOLD in .env, no code changes needed
  • Users can re-enroll their face from their own dashboard if their appearance changes (new glasses, beard, whatever)

Liveness Detection

  • Randomized challenges: blink twice, turn left, turn right, or smile, picked fresh for every login so nobody can pre-record the right response
  • Blink detection runs on EAR calculations from MediaPipe landmarks, while head turns and smiles are verified from landmark geometry
  • Each challenge expires in 15 seconds

Adaptive OTP

  • Three delivery options: email, SMS through Twilio (optional), or TOTP with a scannable QR code for Google Authenticator using pyotp and qrcode
  • Risk scoring looks at device fingerprint, IP address, and login hour, and skips OTP only when all three match your usual pattern
  • 10 single-use backup recovery codes, in case you lose your phone the night before your viva

Security Hardening

  • Account locks after 5 failed attempts, with django-ratelimit guarding the login endpoint
  • Intruder snapshot plus alert email when face matching fails repeatedly
  • Full AuditLog model recording every login step
  • CSRF protection and secure cookie settings in the production config, with all secrets loaded from .env

Dashboards

  • User dashboard: login history, active sessions, "log out of all devices", OTP settings, backup codes
  • Staff admin dashboard at /admin-dashboard/ with Chart.js graphs for logins per day, success vs failure, spoof attempts blocked, locked accounts, and an intruder photo gallery

Authentication as a Service API

  • Django REST Framework endpoints: /api/register/, /api/face/enroll/, /api/face/verify/, /api/otp/send/, /api/otp/verify/
  • Successful OTP verification returns JWT access and refresh tokens through simplejwt

Accuracy Evaluation (FAR / FRR)

This is the section most students skip, and it's exactly what separates a demo from a proper final year project. Drop images into dataset/genuine/, dataset/impostor/ and dataset/spoof/, then run python manage.py evaluate --threshold 0.55. You'll get accuracy, FAR, FRR, a confusion matrix, and a FAR/FRR-vs-threshold plot saved in the reports/ folder. Paste that graph into your report's results chapter. Done.

Real-World Applications

  • Online banking: an extra face-plus-liveness step before a big transfer, so a stolen password alone isn't enough
  • Online exam proctoring: confirming the enrolled student is actually sitting at the laptop, not a friend holding up their photo
  • Hospital records: doctors accessing patient files with strong identity checks and a tamper-evident audit trail, useful for DPDP-style compliance
  • College and office portals: step-up login for admin panels, VPNs and internal tools
  • E-governance services: citizen portals that want biometric assurance without plugging into an external biometric database
  • Lab or office entry kiosks: the enrollment and FAR/FRR tuning pipeline adapts to fixed-camera hardware
  • Identity backend for other apps: the REST API can sit behind any web or mobile frontend

Tech Stack at a Glance

Python 3.11 and Django 5 on the backend. OpenCV, face_recognition (dlib) and MediaPipe for the vision work. pyotp and qrcode for TOTP. SQLite for local development, PostgreSQL for production, with a Docker Compose setup included. Bootstrap 5 and Chart.js on the frontend, Django REST Framework for the API. The code is split into clean apps: accounts, face_auth, liveness, otp, audit, dashboard and api. Your examiner will be able to follow it, which matters more than people think.

The Honest Part

Here's the thing. Installing dlib on Windows is annoying. It wants a C++ compiler, and the first attempt often fails with a wall of red text. We've documented the workaround (pip install dlib-bin gives you a prebuilt wheel with no compiling), but budget an extra 20 minutes for it.

But the rest is easier than it looks. You don't even need to configure a real email account to test OTPs, because one line in .env switches Django to the console email backend and the codes print straight into your terminal. And the test suite runs with pytest even before the computer vision libraries are installed, since the tests that need them just skip themselves.

Who Should Buy This

If you're a student who needs a working project for your college submission, final-year project, semester project, internship, or academic demonstration, this is for you. Whether you're studying BCA, B.Tech, MCA, M.Tech, Computer Science, IT, AI, Data Science, or another related field, you can choose a project that fits your requirements. If you need the source code, project report, documentation, or help setting up and running the project, CodeAj gives you the resources and support to get started faster.

It's a particularly good pick if your specialization leans toward cyber security or computer vision, since it touches both. Mixing domains like this usually impresses external examiners.

Why CodeAj

You get the complete source code, every app, template, migration and management command, plus the Mermaid architecture, login-flow and ER diagrams in the docs/ folder. The project report is written to match what the code actually does, so you won't be defending chapters that describe features that don't exist. And if the webcam won't open or dlib refuses to install, our setup support team will get on a call and sort it out with you. Want more options before you decide? Browse our Python final year projects, check out other Django projects with source code, or look at more computer vision final year projects if face tech is your thing.

Frequently Asked Questions

You will get the complete source code along with an installation guide and chat support to help you set up and understand the project.
All our projects are thoroughly tested multiple times, so the code is completely error-free. But in case you still face any issue, you can reach out to us on WhatsApp (+91 8603862290) and we will fix it and provide you the updated code.
You can book a 1-on-1 Setup & Explanation Session where we connect via AnyDesk and Google Meet, set up the project on your laptop, and explain the complete code working and flow.
No, you cannot re-sell the project. This is completely illegal and a violation of our terms. If we find any such activity, we will take legal action.
Nope. After your face matches, the system asks for a random action like blinking twice or turning your head, and you've got 15 seconds. A printed photo can't blink, and a pre-recorded video won't know which challenge is coming. That's the entire point of the liveness layer.
Not at all. Set EMAIL_BACKEND to Django's console backend in .env and the OTP shows up right in your terminal. Or pick the TOTP option, scan the QR code with Google Authenticator, and demo it straight from your phone. Twilio is completely optional.
Super common, don't panic. Run pip install cmake, then pip install dlib-bin. That grabs a prebuilt wheel so nothing needs compiling. If you insist on regular dlib, install Visual Studio Build Tools with the Desktop development with C++ workload first. Still stuck? Our setup team will fix it with you.
Drop images into dataset/genuine, dataset/impostor and dataset/spoof, then run python manage.py evaluate --threshold 0.55. You'll get accuracy, FAR, FRR, a confusion matrix and a FAR/FRR vs threshold graph in the reports folder. That graph alone makes your results chapter look serious.
No. Only 128-number face embeddings get saved, and even those are encrypted with Fernet. The photos are processed in memory and thrown away. The one exception is intruder snapshots, captured after repeated failed matches so the real owner can see who tried to break in.
That's the adaptive part, and examiners love asking about it. If your device, IP and login time match your usual pattern, the risk score stays low and OTP gets skipped. Try logging in from a new laptop at 3 AM and watch the OTP come right back.
Yeah. The api app has endpoints for register, face enroll, face verify, OTP send and OTP verify. A successful OTP check hands back JWT access and refresh tokens. So any Flutter, React or Android frontend that can send HTTP requests can plug in.
Installation Guide

Extra Add-Ons Available – Elevate Your Project

Add any of these professional upgrades to save time and impress your evaluators.

Live 1-on-1 Mentorship

Personal session with an expert developer

Project Setup

We'll install and configure the project on your PC via remote session (Google Meet, Zoom, or AnyDesk).

Source Code Explanation

1-hour live session to explain logic, flow, database design, and key features.

Want to know exactly how the setup works? Review our detailed step-by-step process before scheduling your session.

999

Custom Documents (College-Tailored)

  • Custom Project Report: ₹1,500
  • Custom Research Paper: ₹1,000
  • Custom PPT: ₹800

Fully customized to match your college format, guidelines, and submission standards.

Project Modification

Need feature changes, UI updates, or new features added?

Charges vary based on complexity.

We'll review your request and provide a clear quote before starting work.

Project Files

GoogleReviews

What Our Students Say

4.9(38+ reviews)
Google review 1
Google review 2
Google review 3
Google review 4
Google review 5
Google review 6
Google review 7
Google review 8
Google review 9
Google review 10
Google review 11
Google review 12
Google review 13
Google review 14
Google review 15
Google review 16
Google review 17
Google review 18
Google review 19
Google review 20
Google review 21
Google review 22
Google review 23
Google review 24
Google review 25
Google review 26
Google review 27
Google review 28
Google review 29
Google review 30
Google review 31
Google review 32
Google review 33
Google review 34
Google review 35
Google review 36
Google review 37
Google review 38
⭐ 98% SUCCESS RATE
  • Full Development
  • Documentation
  • Presentation Prep
  • 24/7 Support