All work

02 / 05 Case study · My own product

Attendify

An attendance platform that verifies the person, not just their phone. It reads a fingerprint from an ordinary phone camera, with no scanner hardware, and checks the face in the same flow. It started as my final-year project, and I still build and run it alone.

Role
Sole developer
When
May – Aug 2026
Owner
My own product
The Attendify home page: “Track Every Student. Zero Effort Required.” beside sample attendance cards.
Public home page of attendify.pro.

01 — Problem

What needed solving

Roll calls waste class time, and most digital attendance is easy to fake: a friend scans the QR code, or someone taps “present” from outside the room. Fingerprint scanners fix that, but they cost money, need maintenance and put a queue at the door.

02 — Build

What I built

  • Contactless fingerprint capture from a normal phone camera, plus face verification in the same flow.
  • Face matching with ArcFace / InsightFace embeddings, stored and searched in PostgreSQL with pgvector.
  • Liveness checks that combine MediaPipe challenges with passive texture checks, so a photo or a screen can’t stand in for a face.
  • Anti-proxy layers: a rotating QR code as a presence gate, a GPS geofence, and device and IP fingerprinting.
  • Multi-tenant from the start, with a 50+ endpoint TypeScript API, a FastAPI ML service and a 30+ page React app.

03 — Architecture

How it works

DOCKER · 7 CONTAINERSReact appTypeScript · 30+ pagesphone cameracaptureTypeScript APINode / Express50+ endpointsmulti-tenantML servicePython / FastAPIOpenCV · InsightFace · MediaPipePostgreSQL + pgvectorface embeddingsRedisbiometricsEVERY MARK HAS TO PASSRotating QRGPS geofenceDevice & IPLivenessFace matchFingerprintReact appTypeScript · 30+ pagesphone camera captureDOCKER · 7 CONTAINERSTypeScript APINode / Express50+ endpoints · multi-tenantML serviceFastAPIOpenCVInsightFaceMediaPipePostgres+ pgvectorfaceembeddingsRedisbiometric work runs in the ML serviceEVERY MARK HAS TO PASSRotating QRGPS geofenceDevice & IPLivenessFace matchFingerprint
A React app and a TypeScript API handle institutions, classes and attendance. Biometric work (fingerprint, face and liveness) runs in a separate Python ML service, and face embeddings are matched with pgvector in PostgreSQL. The stack runs as seven Docker containers.

04 — Outcome

Results

  • Live at attendify.pro.
  • No scanner hardware: an ordinary phone camera captures the fingerprint and the face.
  • A 50+ endpoint API, a 30+ page app and a 7-container Docker stack, built and run by one developer.

05 — Stack

Built with

  • React
  • TypeScript
  • Node.js / Express
  • Python / FastAPI
  • OpenCV
  • InsightFace
  • MediaPipe
  • PostgreSQL + pgvector
  • Redis
  • Docker
  • Cloudflare

Next step

Let’s talk.

Want something like this built, or hiring for a role? I’m open to both.

Google Meet · 30 min

Book a call with Shakaib

Loading times…

Pick a date

Choose a day to see open times.

Times in your time zone

——
  • 30 minutes on Google Meet
  • Invite and Meet link by email
  • Need another time? Just email me

You’ll get a Google Calendar invite with the Meet link.

You’re booked.

An invite with the Meet link is on its way to .