A comprehensive Flutter-based Point of Sale application designed for retail businesses. This modern POS system provides real-time sales tracking, inventory management, and payment processing capabilities with cloud-based data synchronization.
- Features
- Screenshots
- Architecture
- Tech Stack
- Prerequisites
- Installation
- Configuration
- Usage
- Project Structure
- Contributing
- License
- Real-time Sales Processing: Process sales transactions with automatic inventory updates
- Multi-payment Support: Accept both cash and card payments (Stripe integration ready)
- Barcode Scanning: Built-in barcode scanner for quick product identification
- Receipt Generation: Digital receipt generation for completed transactions
- Real-time Dashboard: Live sales metrics and key performance indicators
- Daily Sales Tracking: Monitor today's sales, profits, and transaction volumes
- Low Stock Alerts: Automatic notifications when inventory runs low
- Pending Orders Management: Track and manage incomplete transactions
- Product Catalog: Comprehensive product database with SKU and barcode support
- Stock Level Monitoring: Real-time inventory tracking with configurable low-stock thresholds
- Product Search: Autocomplete search functionality for quick product lookup
- Inventory Updates: Automatic stock adjustments upon sale completion
- Tax Configuration: Configurable tax rates for different regions
- Discount Management: Flexible discount system for promotional pricing
- User Authentication: Secure user access with Firebase Authentication
- Cloud Synchronization: Real-time data sync across multiple devices
This application follows a clean architecture pattern with clear separation of concerns:
- Presentation Layer: Flutter widgets and screens
- Business Logic: State management with Provider pattern
- Data Layer: Firebase Firestore for cloud storage and Hive for local caching
- Services: Firebase services for authentication and cloud functions
- Flutter 3.7.2: Cross-platform mobile development framework
- Dart: Programming language for Flutter development
- Material Design 3: Modern UI/UX design system
- Provider 6.1.2: Lightweight state management solution
- Firebase Core 3.13.0: Backend-as-a-Service platform
- Cloud Firestore 5.4.3: NoSQL cloud database
- Firebase Auth 5.3.1: User authentication and authorization
- Stripe SDK 5.0.0: Payment processing integration (ready for implementation)
- Hive 2.2.3: Lightweight NoSQL local database
- Hive Flutter 1.1.0: Flutter integration for Hive
- Flutter Barcode Scanner 2.0.0: QR/Barcode scanning capabilities
- FL Chart 0.70.2: Beautiful charts and analytics visualization
- Build Runner 2.4.12: Code generation tool
- Hive Generator 2.0.1: Automatic type adapter generation
- Flutter Lints 5.0.0: Code quality and style enforcement
Before running this application, ensure you have the following installed:
- Flutter SDK: Version 3.7.2 or higher
- Dart SDK: Version 3.0.0 or higher
- Android Studio or VS Code with Flutter extensions
- Firebase Account: For backend services
- Android Device/Emulator or iOS Device/Simulator
- Minimum SDK: Android API 21 (Android 5.0) / iOS 11.0
- Target SDK: Android API 34 / iOS 17.0
- RAM: Minimum 4GB (8GB recommended)
- Storage: 2GB free space
git clone https://github.com/SindyMl/pos.git
cd pos/posflutter pub getflutter packages pub run build_runner build- Create a new Firebase project at Firebase Console
- Enable the following services:
- Authentication: Email/Password provider
- Firestore Database: In production mode
- Cloud Storage: For file uploads (optional)
# Install Firebase CLI
npm install -g firebase-tools
# Login to Firebase
firebase login
# Configure Firebase for Flutter
flutter pub global activate flutterfire_cli
flutterfire configure# Debug mode
flutter run
# Release mode
flutter run --releaseThe application uses the following Firestore collections:
{
"total": 150.75,
"timestamp": "2024-01-15T10:30:00Z",
"status": "completed",
"items": [
{
"sku": "PROD001",
"name": "Product Name",
"price": 25.99,
"quantity": 2
}
],
"paymentType": "cash"
}{
"sku": "PROD001",
"name": "Product Name",
"barcode": "1234567890123",
"price": 25.99,
"quantity": 100,
"category": "Electronics"
}// Document ID: "tax"
{
"rate": 15.5
}
// Document ID: "lowStock"
{
"threshold": 10
}
// Document ID: "discount"
{
"value": 5.0
}Create a .env file in the project root (if needed for API keys):
STRIPE_PUBLISHABLE_KEY=pk_test_your_key_here
STRIPE_SECRET_KEY=sk_test_your_key_here- Launch the App: Open the application on your device
- Dashboard Overview: View real-time business metrics
- Process Sales: Navigate to the sales screen to begin transactions
-
Add Products:
- Scan barcodes using the built-in scanner
- Or manually enter product SKU/barcode
- Use autocomplete for quick product search
-
Review Cart:
- Verify items and quantities
- Remove items if necessary
-
Process Payment:
- Select payment method (Cash/Card)
- For cash: Enter amount tendered and view change
- For card: Use integrated payment processing
-
Complete Transaction:
- Finalize the sale
- Generate digital receipt
- Automatic inventory updates
- Today's Sales: View current day revenue
- Low Stock Alerts: Monitor inventory levels
- Profit Tracking: Real-time profit calculations
- Pending Orders: Manage incomplete transactions
pos/
โโโ android/ # Android platform configuration
โโโ ios/ # iOS platform configuration
โโโ lib/
โ โโโ dashboard.dart # Main dashboard screen
โ โโโ firebase_options.dart # Firebase configuration
โ โโโ main.dart # Application entry point
โ โโโ sales.dart # Sales transaction screen
โ โโโ utils/
โ โโโ constants.dart # App-wide constants and colors
โโโ test/ # Unit and widget tests
โโโ web/ # Web platform assets
โโโ windows/ # Windows platform configuration
โโโ analysis_options.yaml # Dart analyzer configuration
โโโ firebase.json # Firebase project configuration
โโโ pubspec.yaml # Dependencies and project metadata
โโโ README.md # This file
main.dart: Application entry point with routing and theme configurationdashboard.dart: Main dashboard with real-time business metricssales.dart: Complete sales transaction processing interfaceconstants.dart: Centralized color scheme and app constantsfirebase_options.dart: Auto-generated Firebase configuration
We welcome contributions to improve this POS system! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Dart Style Guide
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
Please use the GitHub Issues page to report bugs or request features.
This project is proprietary and private. All rights reserved.
- Multi-store Support: Manage multiple store locations
- Advanced Analytics: Detailed sales reports and trends
- Employee Management: User roles and permissions
- Loyalty Program: Customer rewards and points system
- API Integration: Connect with accounting software
- Offline Mode: Enhanced offline capabilities with sync
For support and questions, please contact:
- Email: chantymulondo@gmail.com
- GitHub: @SindyMl
Built with โค๏ธ using Flutter and Firebase