A beautiful, modern web application built with Nuxt 4 and Nuxt UI for scanning grocery receipts and managing your stock inventory.
- 📸 Receipt Scanning: Upload receipt images (JPG, PNG) or PDF files with drag-and-drop
- 🔍 OCR Processing: Automatic extraction of items from receipts (mock implementation)
- 📦 Stock Management: Track your grocery inventory in real-time
- 📊 Dashboard Stats: View total items, quantities, and values at a glance
- ✨ Beautiful UI: Modern design with blue/yellow color scheme and premium fonts
- 🚀 Fast & Responsive: Powered by Nuxt 4 with smooth animations
- 📱 Mobile-First: Fully responsive design for all devices
billapp features a clean, modern interface with:
- Color Scheme: Blue primary, white background, yellow accents
- Typography: Poppins for headings, Inter for body text
- Logo: Custom receipt icon with yellow accent dot
- Components: Cards, buttons, and forms with hover effects and shadows
- Animations: Smooth transitions and loading states
See DESIGN.md for complete design system documentation.
- Node.js 18+ and npm
- Google Gemini API key (free tier available)
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env and add your GEMINI_API_KEY from https://aistudio.google.com/app/apikey
# Run development server
npm run devThe app will be available at http://localhost:3000
Note: Without a Gemini API key, the app will use mock data for receipt parsing.
- View Your Stock: The home page displays all items in your inventory
- Scan Receipt: Click "Scan Receipt" to upload a receipt image or PDF
- Review Parsed Items: The app extracts items from your receipt (currently using mock data)
- Add to Stock: Confirm and add all items to your inventory
- Manage Items: Edit or delete items from your stock
app/
├── pages/
│ ├── index.vue # Stock overview page
│ └── scan.vue # Receipt scanning page
├── composables/
│ └── useStock.ts # Stock management composable
└── types/
└── index.ts # TypeScript type definitions
server/
└── api/
├── stock/
│ ├── index.ts # Stock CRUD operations
│ └── [id].ts # Individual item operations
└── receipts/
└── parse.ts # Receipt parsing endpoint
- Add OpenAI GPT-4 Vision as alternative LLM provider
- Add UI toggle to switch between LLM providers
- Fine-tune prompts for better accuracy with cryptic receipts
- Add database persistence (MongoDB, PostgreSQL, etc.)
- Implement user authentication
- Add categories and filtering
- Expiration date tracking and notifications
- Shopping list generation based on stock levels
- Recipe suggestions based on available items
- Barcode scanning for quick item addition
- Export stock data (CSV, PDF)
- Multi-user support with sharing
- Nuxt 4: Vue.js framework
- Nuxt UI: Component library
- TypeScript: Type safety
- Tailwind CSS: Styling (via Nuxt UI)
- Google Gemini: AI-powered receipt parsing
The app uses Google Gemini 2.0 Flash for intelligent receipt parsing:
- Upload a receipt image (JPG, PNG)
- Gemini analyzes the image and extracts:
- Store name
- Product names (expanded from abbreviations)
- Quantities and units (kg, g, L, ml, pcs)
- Individual item prices
- Items are automatically categorized
- Add to your stock with one click
Prompting: The parsing prompt is designed to handle cryptic receipt formats and can be iteratively improved. See /server/api/receipts/parse.ts to adjust the prompt for better accuracy.
Free Tier: Google Gemini offers 1M requests/day for free, perfect for personal use.
API Key Required: Get a free Gemini API key from Google AI Studio and add it to your .env file. Without it, the app will use mock data.
MIT