Back to projects

Biller
Matan Shaviro / March 27, 2024
A sophisticated bill management application built with React Native and Expo, offering intelligent bill analysis and organization with a focus on user experience.
View on GitHubCore Features
- AI-Powered Analysis: Leveraging Google's Generative AI for smart bill analysis
- Smart Organization: Intelligent categorization and management of bills
- Real-time Processing: Instant bill scanning and data extraction
- Secure Storage: Local data persistence with AsyncStorage
- Responsive Design: Native-first approach with cross-platform support
- Type Safety: End-to-end type safety with TypeScript
- Gesture Support: Intuitive interactions with react-native-gesture-handler
Project Architecture
Directory Structure
biller/
├── app/ # Expo Router app directory
│ ├── (tabs)/ # Tab-based navigation
│ ├── modals/ # Modal screens
│ └── _layout.tsx # Root layout
├── components/ # Reusable components
│ ├── bills/ # Bill-related components
│ ├── common/ # Shared UI components
│ └── layout/ # Layout components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions and services
│ ├── ai/ # AI integration services
│ ├── storage/ # Data persistence logic
│ └── utils/ # Helper functions
├── types/ # TypeScript type definitions
├── constants/ # App-wide constants
└── assets/ # Static assets
Key Architectural Decisions
1. Data Flow
User Action → UI Component → Hook/Service → Storage/API → State Update → UI Update
2. Performance Considerations
- Lazy Loading: Dynamic imports for route-based code splitting
- Image Optimization: Efficient image handling with expo-image
- Memoization: Strategic use of React.memo and useMemo
- Gesture Optimization: Hardware-accelerated gestures
Frontend
- React Native: Native mobile development with Expo
- Expo Router: File-based routing for seamless navigation
- Bottom Sheet: Smooth bottom sheet interactions with @gorhom/bottom-sheet
- Reanimated: Performant animations and transitions
- Blur Effects: Modern UI with expo-blur
- Haptics: Tactile feedback for better user experience
Backend & Storage
- AsyncStorage: Efficient local data persistence
- File System: Robust file handling with expo-file-system
- Image Processing: Advanced image manipulation with expo-image-manipulator
- Camera Integration: Native camera access for bill scanning
- Web Browser: In-app web browsing capabilities