High-performance computer vision backend + cross-platform mobile app
Ventus is a real-time outdoor scene verification system that combines a high-performance C++ computer vision engine with a cross-platform mobile application. The system verifies whether users are actually outdoors by analyzing selfie photos in real-time.
Use Case: Wake-up accountability app that requires an outdoor selfie to prove you're awake—with computer vision ensuring authenticity.
The core of Ventus is a custom-built computer vision engine optimized for low-latency mobile inference.
| Metric | Value |
|---|---|
| Inference Latency | <50ms per image |
| Throughput | 500+ verifications/day |
| Scene Classification | 95%+ accuracy |
| Outdoor Categories | 40+ scene labels |
┌─────────────────────────────────────────────────────────────────┐
│ Ventus CV Engine │
│ ┌───────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ Preprocessing │──▶│ Scene CNN │──▶│ Verification Logic │ │
│ │ (OpenCV) │ │ (TFLite) │ │ │ │
│ └───────────────┘ └──────────────┘ └─────────────────────┘ │
│ │ │ │
│ └───────────────────┬───────────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Face Detector │ │
│ │ (BlazeFace) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
gRPC API
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Flutter Mobile App │
│ Camera Capture → Upload → Display Results │
└─────────────────────────────────────────────────────────────────┘
- Custom CNN Model — Trained on 50,000+ images across 51 scene categories
- Multi-Factor Verification — Scene classification + face detection
- Optimized Inference — TensorFlow Lite with INT8 quantization
- gRPC Streaming — Supports batch processing for high throughput
- Cross-Platform — Runs on Linux, macOS, and embedded devices
sky, outdoor, nature, tree, forest, park, street, road, sidewalk,
building_exterior, garden, beach, ocean, mountain, hill, field,
meadow, lake, river, waterfall, sunrise, sunset, cloud, sun, rain,
snow_outdoor, desert, canyon, cliff, bridge, parking_lot, playground,
stadium, campus, courtyard, patio, balcony, rooftop, trail, path
Cross-platform mobile client with social accountability features.
- 🔔 Smart Alarms — Customizable wake-up times with grace windows
- 📸 Camera Integration — Native camera for selfie capture
- 🔥 Streak Tracking — Calendar views and progress visualization
- 👥 Social Accountability — SMS notifications via Twilio
- 🔐 Secure Auth — Amazon Cognito authentication
| Layer | Technology |
|---|---|
| Framework | Flutter 3.35 |
| State | Riverpod |
| Navigation | Go Router |
| Local Storage | Hive |
| Auth | AWS Cognito |
| Storage | AWS S3 |
Ventus/
├── engine/ # C++ CV Engine
│ ├── src/ # Source files
│ │ ├── preprocessing.cpp # OpenCV image processing
│ │ ├── scene_classifier.cpp # TFLite inference
│ │ ├── inference_engine.cpp # Verification pipeline
│ │ └── server.cpp # gRPC server
│ ├── include/ # Header files
│ ├── proto/ # gRPC service definitions
│ ├── models/ # TFLite model files
│ ├── tests/ # Unit tests
│ └── CMakeLists.txt # Build configuration
│
├── app/ # Flutter Mobile App
│ ├── lib/
│ │ ├── core/ # Services, routing, constants
│ │ ├── features/ # Feature modules
│ │ └── shared/ # Shared widgets
│ ├── amplify/ # AWS backend config
│ └── assets/ # Images, fonts
│
└── README.md
# Install dependencies (macOS)
brew install opencv grpc protobuf cmake
# Build
cd engine
mkdir build && cd build
cmake ..
make -j$(nproc)
# Run server
./ventus_server --port 50051 --model models/scene_classifier.tflitecd app
flutter pub get
flutter runTested on Apple M1 MacBook Air:
| Operation | Time |
|---|---|
| Image Decode (JPEG) | 3ms |
| Preprocessing (resize, normalize) | 5ms |
| Scene Classification | 25ms |
| Face Detection | 12ms |
| Total End-to-End | ~45ms |
# Engine unit tests
cd engine/build
ctest --output-on-failure
# Flutter tests
cd app
flutter testContributions welcome! Please open an issue or submit a PR.
MIT License — See LICENSE for details.
Henry Fritz — GitHub
Project Link: https://github.com/hfritz34/Ventus
