Mobile inventory tracking powered by barcode scanning and on-device OCR.
Track products, detect expiry dates automatically, and reduce waste through smart inventory management.
BatchGuard is a React Native mobile application that automates inventory tracking using device camera capabilities.
Instead of manually logging products and expiry dates, users:
- Scan a barcode
- Automatically detect expiry dates via OCR
- Verify data in a streamlined workflow
- Maintain a synchronized inventory list
The project demonstrates practical use of computer vision, mobile performance optimization, and scalable state architecture.
🎥 Demo Video (Recommended) https://github.com/asad117/batchguard/assets/demo.mp4
Manual inventory tracking often leads to:
- Expired products
- Data entry errors
- Poor stock visibility
- Time-consuming logging
BatchGuard reduces friction by turning a smartphone camera into an inventory scanner.
- Real-time barcode recognition
- OCR-based expiry date detection
- Vision Camera frame processing
- Editable confirmation modal
- Quantity stepper controls
- Category assignment
- Brand correction support
- Category-based organization
- Instant global updates using Zustand
- Cloud persistence via Google Sheets integration
- Haptic feedback interactions
- Guided camera overlays
- Minimal UI optimized for speed
This project focuses on real-world mobile engineering challenges:
- Camera frame processing without UI blocking
- OCR parsing and date normalization
- Global state design using lightweight stores
- Hardware-first UX design
- Modular architecture for scalability
| Decision | Reason |
|---|---|
| Zustand over Redux | Minimal boilerplate, faster updates |
| Vision Camera | Native-level performance |
| Expo Prebuild | Balance between speed and native control |
| OCR Automation | Reduce manual input errors |
| Layer | Technology |
|---|---|
| Framework | React Native (Expo) |
| Language | TypeScript |
| Camera | Vision Camera v3 |
| State | Zustand |
| OCR | Frame Processors |
| UI | Custom Components + Expo Haptics |
assets/
src/
├── components/ UI components
├── hooks/ Scanner & business logic
├── store/ Zustand state models
├── utils/ OCR + date helpers
docs/ Screenshots & demo assets
- Separation of concerns
- Feature-driven structure
- Performance-first design
- Maintainable scaling
- Node.js ≥ 18
- Expo CLI
- Physical mobile device
git clone https://github.com/asad117/batchguard.git
cd batchguard
npm installRun:
npx expo startNative build:
npx expo prebuild
npx expo run: android- Expiry reminder notifications
- Multi-user inventories
- Offline-first sync
- Inventory analytics dashboard
- Product database enrichment
- Camera-heavy apps require strict performance awareness.
- OCR data is inconsistent and requires normalization logic.
- Lightweight state management improves developer velocity.
- UX clarity matters more than feature quantity.
Asad Ahmad Full Stack Developer
GitHub: https://github.com/asad117 Portfolio: https://asad-personal-portfolio.netlify.app/

