Hobby Project · Flutter · iOS · Liveness Detection

SmileyLiveness — Smile Liveness Detection

A personal hobby eKYC project exploring smile (active) liveness detection — built in both Flutter and as a native iOS demo app, with a face oval overlay, real-time smile confidence scoring, and pass/fail result states.

Screen 1 — Instructions
9:41 ● ● ● 🔋
😊
Smile Liveness Check
We'll verify that you're a real person by asking you to smile naturally in front of the camera.
1
Position your face
Align your face within the oval guide on the camera screen
2
Wait for the prompt
Hold still until the "Please Smile" instruction appears
3
Smile naturally
Give a natural smile — not too wide, not too subtle
Tips for success
Good, even lighting (avoid backlight)
Remove sunglasses or face mask
Hold device steady at eye level
Look directly at the front camera
Start Verification
Screen 2 — Smile Detection (Active)
9:41 ● ● ● 🔋
😁
Real Person Detection · Smile Active
😊 Please Smile!
Hold your smile for 1 second
Smile Confidence 78%
Cancel Attempt 1 of 3
Screen 3 — Liveness Passed
9:42 ● ● ● 🔋
Liveness Passed
Real person successfully verified
Detection Results
Liveness Check
✓ Pass
Anti-Spoof
✓ Real
Smile Detected
✓ Confirmed
Face Quality
✓ Good
Smile Confidence Score 92.4%
Face Quality Score 87.1%
Verification Time 2.3 seconds
Algorithm SmileLiveness v1.0
Attempt 1 of 3
Timestamp 25 Jun 2026, 09:42
Continue →
Retry Verification
🤖 Flutter (Android & iOS)
🍎 iOS Native (Swift + XCFramework)
🎮 Hobby / Personal Project
Tech Stack
Flutter / Dart
Cross-platform implementation — runs on both Android and iOS from a single codebase
Swift (iOS Native)
Native iOS demo app (EkycDemo) built in Swift, packaged as an XCFramework
Face Oval Overlay
Custom painted oval guide aligned with camera feed for precise face positioning
Smile Confidence Score
Real-time facial landmark analysis to score smile intensity against a threshold
Liveness State Machine
State flow: IDLE → FACE_DETECTED → SMILE_PROMPTED → SMILE_CONFIRMED → PASSED
Anti-Spoof Detection
Distinguishes real faces from photos/screens using texture and depth cues