Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

ShelfIQ

ShelfIQ is a comprehensive Expo + React Native inventory management app for small business owners. It provides complete inventory tracking, sales and purchase management, customer management, OCR-powered bill processing, and invoice generation capabilities.

Features

✅ Completed

  • Authentication System

    • User registration with automatic company and warehouse creation
    • Email/password login with session persistence
    • Password recovery via email
    • Secure token storage using AsyncStorage
  • Business Profile Management

    • Edit company details (name, email, phone, address)
    • Upload and manage company logo
    • Logo storage in Supabase Storage
  • Navigation

    • Bottom tab navigation (Home, Dashboard, Items, More)
    • Stack navigation for authentication flow
    • Stack navigation for Home tab (Business Profile)
  • Home Screen

    • Welcome header with company logo and name
    • Summary cards for key metrics (products, low stock, sales, revenue, customers)
    • Recent transactions and customer activity
    • Invoice generation and sharing
    • Quick access to all major features
  • Product Management

    • Add, edit, and delete products
    • Product detail view with full information
    • SKU management with uniqueness per company
    • Product images support
    • Cost and selling price tracking
    • Stock level adjustments
    • Low stock alerts and reorder levels
    • Product search and filtering
  • Inventory Tracking

    • Real-time stock level monitoring
    • Stock adjustments with history
    • Low stock alerts and notifications
    • Reorder level and quantity management
    • Inventory views by warehouse
  • Sales Management

    • Create sales with multiple products
    • Customer selection and assignment
    • Payment method tracking (Cash, Card, UPI, Credit)
    • Tax calculation and application
    • Sales history and detail views
    • Sales analytics and reporting
    • Revenue tracking
  • Purchase Management

    • Create purchase orders
    • Supplier/vendor management
    • OCR-powered bill processing using Gemini AI
    • Automatic extraction of vendor, items, quantities, and prices from bills
    • Support for images (JPG, PNG) and PDF documents
    • Purchase history and detail views
    • Automatic inventory updates on purchase
  • Customer Management

    • Add, edit, and delete customers
    • Customer contact information (name, email, phone, address)
    • Customer transaction history
    • Customer list with search functionality
    • Customer cards for quick reference
  • OCR & Bill Processing

    • AI-powered OCR using Google Gemini 2.0 Flash
    • Automatic extraction of vendor/supplier names
    • Line item extraction (product name, quantity, unit price)
    • Tax and total amount extraction
    • Support for multiple file formats (JPG, PNG, PDF)
    • Preview and edit extracted data before saving
    • Automatic product matching and creation
  • Invoice Generation

    • Professional PDF invoice generation
    • Company branding with logo
    • Multiple invoice formats (Standard, Detailed, Minimal)
    • Print and share functionality
    • Customer and company details
    • Itemized billing with taxes
    • Invoice customization settings
  • Dashboard & Analytics

    • Comprehensive analytics dashboard
    • Sales and revenue metrics
    • Product performance tracking
    • Customer insights
    • Low stock alerts
    • Transaction summaries
  • Settings

    • User profile management
    • Invoice format preferences
    • App customization options
    • Sign out functionality
  • Navigation

    • Bottom tab navigation (Home, Dashboard, Items, More)
    • Stack navigation for authentication flow
    • Stack navigation for Home tab (Business Profile)
    • Stack navigation for Products (Items tab)
    • Stack navigation for Sales
    • Stack navigation for Purchases
    • Stack navigation for Customers
  • Database Schema

    • Complete Supabase schema with core tables
    • Row Level Security (RLS) policies
    • Automatic triggers for calculations and alerts
    • Views for optimized queries
    • Support for companies, users, products, inventory, sales, purchases, customers, and more

Tech Stack

  • Framework: Expo + React Native (v0.81.5)
  • Backend: Supabase (PostgreSQL + Auth + Storage)
  • Navigation: React Navigation (Tabs + Stack)
  • State Management: React Context API
  • Storage: AsyncStorage for session, Supabase Storage for files
  • OCR/AI: Google Gemini 2.0 Flash API
  • PDF Generation: Expo Print
  • File Handling: Expo File System, Document Picker, Image Picker
  • Camera: Expo Camera
  • UI Components: React Native core + Expo Vector Icons

Project Structure

ShelfIQ/
├── App.js # App entry point with AuthProvider
├── app.json # Expo configuration
├── lib/
│ └── supabase.js # Supabase client configuration
├── contexts/
│ ├── AuthContext.js # Authentication context & hooks
│ └── SettingsContext.js # App settings context
├── screens/
│ ├── auth/
│ │ ├── LoginScreen.js # Login screen
│ │ ├── RegisterScreen.js # Registration screen
│ │ └── ForgotPasswordScreen.js # Password reset screen
│ ├── products/
│ │ ├── ProductListScreen.js # Product list with search
│ │ ├── AddProductScreen.js # Add new product
│ │ ├── EditProductScreen.js # Edit product
│ │ ├── ProductDetailScreen.js # Product details
│ │ └── AdjustStockScreen.js # Stock adjustments
│ ├── sales/
│ │ ├── SalesListScreen.js # Sales history
│ │ ├── CreateSaleScreen.js # Create new sale
│ │ └── SaleDetailScreen.js # Sale details
│ ├── purchases/
│ │ ├── PurchaseListScreen.js # Purchase history
│ │ ├── CreatePurchaseScreen.js # Create purchase (with OCR)
│ │ └── PurchaseDetailScreen.js # Purchase details
│ ├── customers/
│ │ ├── CustomerListScreen.js # Customer list
│ │ ├── AddCustomerScreen.js # Add customer
│ │ └── EditCustomerScreen.js # Edit customer
│ ├── HomeScreen.js # Main dashboard
│ ├── BusinessProfileScreen.js # Business profile editor
│ ├── DashboardScreen.js # Analytics dashboard
│ ├── SettingsScreen.js # App settings
│ └── MoreScreen.js # More options
├── navigation/
│ ├── TabNavigator.js # Bottom tabs
│ ├── AuthNavigator.js # Auth flow navigation
│ ├── HomeStackNavigator.js # Home tab stack
│ ├── ItemsStackNavigator.js # Products stack
│ ├── SalesStackNavigator.js # Sales stack
│ ├── PurchasesStackNavigator.js # Purchases stack
│ └── CustomerStackNavigator.js # Customers stack
├── components/
│ ├── SplashScreen.js # Splash animation
│ ├── SummaryCard.js # Dashboard cards
│ ├── InvoiceActionModal.js # Invoice actions
│ ├── TaxPicker.js # Tax selection
│ ├── products/
│ │ └── (product components)
│ ├── sales/
│ │ ├── SaleCard.js # Sale card component
│ │ ├── CartItem.js # Cart item
│ │ ├── ProductPicker.js # Product selection
│ │ ├── CustomerPicker.js # Customer selection
│ │ └── PaymentMethodSelector.js # Payment method
│ ├── purchases/
│ │ ├── PurchaseCard.js # Purchase card
│ │ ├── PurchaseCartItem.js # Purchase cart item
│ │ ├── SupplierPicker.js # Supplier selection
│ │ ├── OCRPreviewModal.js # OCR preview
│ │ └── ImageSourcePickerModal.js # Image source picker
│ └── customers/
│ └── CustomerCard.js # Customer card
├── services/
│ ├── productService.js # Product CRUD operations
│ ├── salesService.js # Sales operations
│ ├── purchaseService.js # Purchase operations
│ ├── customerService.js # Customer operations
│ ├── invoiceService.js # Invoice generation
│ └── ocrService.js # OCR processing with Gemini AI
├── database-schema.sql # Database schema
└── assets/ # Images, logos, icons

Getting Started

Prerequisites

  • Node.js (v18 or later)
  • npm or yarn
  • Expo CLI (npm install -g expo-cli)

Setup Instructions

  1. Clone and install dependencies

    npm install
  2. Set up environment variables

    • Get Supabase credentials: Contact Devrat Patel for the project URL and anon key
    • Get Gemini API key: Get your API key from Google AI Studio (required for OCR features)
    • Create a .env file in the root directory:
      EXPO_PUBLIC_SUPABASE_URL=your-project-url
      EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
      EXPO_PUBLIC_GEMINI_API_KEY=your-gemini-api-key
      
  3. Start the development server

    npm start

    Or use:

    npm run ios # iOS Simulator
    npm run android # Android Emulator
    npm run web # Web browser
  4. Test the app

    • Register a new account
    • Login with your credentials
    • Explore the Home screen with summary cards
    • Click company logo/name to edit business profile
    • Upload a company logo
    • Add products and manage inventory
    • Create sales and purchases
    • Test OCR feature by uploading a purchase bill image/PDF
    • Generate and share invoices
    • Manage customers
    • Explore dashboard analytics

Environment Variables

Create a .env file in the root directory:

EXPO_PUBLIC_SUPABASE_URL=your-supabase-project-url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
EXPO_PUBLIC_GEMINI_API_KEY=your-gemini-api-key

Required Variables:

  • EXPO_PUBLIC_SUPABASE_URL: Your Supabase project URL (required for all features)
  • EXPO_PUBLIC_SUPABASE_ANON_KEY: Your Supabase anonymous key (required for all features)
  • EXPO_PUBLIC_GEMINI_API_KEY: Google Gemini API key (required for OCR bill processing feature)

Important: Never commit .env to git. It's already in .gitignore.

Documentation

  • Database Schema: The complete database schema is defined in database-schema.sql. Contact Devrat Patel if you need access to the Supabase database or schema documentation.
  • API Services: All backend operations are handled through service files in the services/ directory:
    • productService.js - Product CRUD and inventory operations
    • salesService.js - Sales creation and management
    • purchaseService.js - Purchase creation and management
    • customerService.js - Customer CRUD operations
    • invoiceService.js - PDF invoice generation and sharing
    • ocrService.js - OCR processing using Gemini AI

Security

  • ✅ Row Level Security (RLS) enabled on all tables
  • ✅ Users can only access their company's data
  • ✅ Secure token storage with AsyncStorage
  • ✅ Environment variables for sensitive credentials
  • ✅ Secure file uploads to Supabase Storage
  • ✅ API keys stored securely in environment variables
  • ✅ Company-level data isolation

Key Features in Detail

OCR Bill Processing

The app uses Google Gemini 2.0 Flash AI to automatically extract data from purchase bills:

  • Upload bill images (JPG, PNG) or PDF documents
  • AI automatically extracts vendor name, line items, quantities, prices, tax, and total
  • Preview and edit extracted data before saving
  • Automatically matches products or creates new ones
  • Supports multiple bill formats and layouts

Invoice Generation

Generate professional PDF invoices with:

  • Company branding and logo
  • Multiple invoice formats (Standard, Detailed, Minimal)
  • Customer and company details
  • Itemized billing with taxes
  • Print and share functionality
  • Customizable invoice settings

Inventory Management

Comprehensive inventory tracking:

  • Real-time stock levels
  • Low stock alerts
  • Stock adjustment history
  • Reorder level management
  • Automatic updates on sales and purchases
  • Multi-warehouse support

Contributing

This is a group project. To contribute:

  1. Create a branch for your feature or fix:

    git checkout -b feature/your-feature-name
    # or
    git checkout -b fix/your-fix-name
  2. Make your changes and commit them:

    git add .
    git commit -m "Description of your changes"
  3. Push your branch to the remote repository:

    git push origin feature/your-feature-name
  4. Create a Pull Request (PR) on GitHub:

    • Go to the repository on GitHub
    • Click "New Pull Request"
    • Select your branch
    • Add a description of your changes
    • Request review from team members
    • Wait for approval before merging

Getting Supabase Credentials

To get Supabase credentials for local development, contact Devrat Patel.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /