A mobile-first cross-platform receipt scanner built with React, TypeScript, and Capacitor. Features AI-powered receipt data extraction, expense tracking, and analytics.
- 📸 Camera Integration - Capture receipts using native camera
- 🤖 AI Extraction - Automatic data extraction from receipt images
- 📝 Manual Entry - Add receipts manually with detailed item tracking
- 📊 Analytics Dashboard - View spending insights by category and merchant
- 🔍 Search & Filter - Find receipts by date, merchant, or amount
- 📱 Cross-Platform - Works on Android, iOS, and web browsers
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Mobile: Capacitor 6
- Styling: TailwindCSS
- State Management: Zustand
- Routing: React Router v6
- HTTP Client: Axios
- Charts: Recharts
- Node.js 18+ and npm
- For mobile development:
- Android Studio (for Android)
- Xcode (for iOS, macOS only)
- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:3000 in your browser
The app connects to a backend API at http://localhost:8080. Update the base URL in src/api/axiosClient.ts if your API is hosted elsewhere.
GET /v1/receipts- List receipts with paginationPOST /v1/receipts- Create manual receiptPOST /v1/receipts/scan- Scan receipt imageGET /v1/receipts/:id- Get receipt detailsPUT /v1/receipts/:id- Update receiptDELETE /v1/receipts/:id- Delete receiptGET /v1/dashboard/summary- Get dashboard analytics
npm run build
npm run androidnpm run build
npm run iossrc/
├── api/ # API client and endpoints
├── components/ # Reusable UI components
├── screens/ # Main app screens
├── store/ # Zustand state management
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
├── App.tsx # Main app component with routing
└── main.tsx # App entry point
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run android- Build and open Android projectnpm run ios- Build and open iOS projectnpm run sync- Sync Capacitor platforms
Create a .env file in the root directory:
VITE_API_BASE_URL=http://localhost:8080MIT