PalmSecure is a biometric authentication system designed for contactless palmprint verification. This project leverages React Native (Expo) for the mobile frontend, Supabase for database & storage management, and a Python-based CCNet model backend for feature extraction & identity verification.
- Capture palm images using the mobile camera.
- Upload images to Supabase Storage.
- Trigger backend API to extract palmprint features.
- Compare features with database vectors using cosine similarity.
- Display verification result with real-time feedback.
- Register new users with Name, Roll Number, and Palm images.
- Upload multiple palm images for feature diversity.
- Trigger feature extraction API post-upload.
- Store extracted feature vectors (fv1–fv4) in Supabase Database.
- Delete uploaded images after successful registration.
- Download images from Supabase for feature extraction.
- Use CCNet model to extract palmprint feature vectors.
- Perform cosine similarity comparison against stored vectors.
- Return matching user information (Name, Roll Number) or failure.
- Clean up temporary files post-processing.
- Show terminal-like logs in frontend for uploads, deletions, verifications.
- Display user-friendly success/failure screens.
- Loading animations during processing.
- Supabase RLS policies for data protection.
- Only authenticated actions allowed for uploads & deletions.
- Backend cleans up temp files & Supabase images after usage.
PalmSecure-App/
├── app/ # Main app screens & components
│ ├── VerifyPalm.js # Palm verification UI & logic
│ ├── AddUser.js # Admin user registration screen
│ └── utils/ # Supabase client & API helpers
├── assets/ # Icons, images, app logos
├── .gitignore # Ignored files config
├── README.md # This documentation
├── package.json # Project dependencies & scripts
├── app.config.js # Expo app config
└── .env # Environment variables (local only)
git clone https://github.com/your-username/PalmSecure.git
cd PalmSecurenpm installCreate a .env file with:
SUPABASE_URL=your-supabase-url
SUPABASE_ANON_KEY=your-supabase-anon-key
API_BASE_URL=http://your-backend-url
npx expo startAccess via:
- 📱 Expo Go (physical device)
- 🖥️ Android Emulator
- 🍏 iOS Simulator s
uvicorn main:app --reloadPOST /verify_palm: For palmprint verification.POST /extract_features: For feature extraction & database update.
-
Reset Expo project cache:
npx expo start -c
-
Run feature extraction API after user image upload.
-
Clean up Supabase bucket & temp directories after registration.
| Frontend | Backend | Database & Storage |
|---|---|---|
| React Native (Expo) | Python FastAPI | Supabase |
| Expo Camera & Image Manipulator | CCNet Feature Extraction | Supabase Storage |
| Tailwind for Styling | Cosine Similarity Matching | Supabase DB (Users Table) |
-
User Verification Flow:
- Capture palm → Upload to Supabase → Backend API verifies → Result shown in app.
-
Admin User Registration Flow:
- Upload multiple palm images → Extract features → Store vectors in DB → Cleanup temp data.
-
Security & Cleanup:
- RLS policies on Supabase.
- Backend auto-deletes temporary files & images.
- Muhammad Salar (Lead Developer)
- Muhammad Hamza
- Talha Bilal
- Supervisor: Dr Atif Tahir
- Supabase Documentation
- Expo Documentation
- CCNet: Comprehensive Convolutional Network Paper
- React Native Docs
- FastAPI Documentation
This project is developed for educational & academic purposes (FYP 2025).