Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HaulPass - Grain Hauling Logistics Application

Flutter Supabase PWA GitHub Pages

Professional grain hauling logistics and tracking solution

πŸš€ Live Demo β€’ πŸ“– Documentation β€’ πŸ”§ Setup Guide

🎯 Overview

HaulPass is a farmer-first grain hauling efficiency application that reduces wait times at grain elevators through real-time queue intelligence and comprehensive haul tracking. By collecting GPS data, timing information, and farmer observations, HaulPass enables data-driven decisions about when to haul grain, ultimately saving farmers hours every week.

The Problem: Farmers waste 2-4 hours daily waiting in grain elevator lines without knowing queue lengths or wait times ahead of time.

The Solution: HaulPass collects farmer-side data (locations, routes, queue positions, timing) to provide real-time queue intelligence and predictive wait times. Unlike traditional elevator scheduling software, we start from the farmer's perspective to build trust and demonstrate value before enabling elevator-side features.

✨ Core Features

MVP (Version 1.0):

  • πŸš› Complete Haul Tracking: Track entire grain hauling workflow from loading to unloading
  • πŸ“ Single Favorite Elevator: Focus on one elevator to prevent data errors
  • ⏱️ Phase-Based Timers: Separate timers for loading, driving, queuing, unloading, and return
  • πŸ‘₯ Queue Intelligence: Real-time queue positions cross-validated between farmers
  • ⏳ Estimated Wait Times: Calculated from user averages and current queue
  • πŸ“Š Daily Summaries: Comprehensive stats at end of each hauling day
  • πŸ“ˆ Personal Analytics: Track efficiency metrics over time

Future Features:

  • Multiple favorite elevators (2-3)
  • Premium grain breakdown (weight, price, quality by grain type)
  • Predictive recommendations (best times to haul)
  • Historical pattern analysis
  • Elevator scheduling integration
  • Farm management tools (bin, field, combine tracking)

πŸš€ Quick Start

Live Demo

Visit: https://bushels.github.io/HaulPass

Local Development

# Clone the repository
git clone https://github.com/Bushels/HaulPass.git
cd HaulPass

# Install dependencies
flutter pub get

# Generate required code
flutter packages pub run build_runner build

# Run on web (recommended for development)
flutter run -d chrome

# Or run on mobile
flutter run -d android  # or ios

πŸ—οΈ Architecture

Technology Stack

  • Frontend: Flutter 3.24 with Riverpod state management
  • Backend: Supabase (Database, Auth, Real-time, Storage)
  • Deployment: GitHub Pages with automated CI/CD
  • State Management: Riverpod 2.x with code generation
  • Routing: GoRouter for navigation
  • PWA: Progressive Web App with offline capabilities

Project Structure

lib/
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ services/         # Core services (Supabase, Environment)
β”‚   β”œβ”€β”€ config/           # Configuration (Web, App)
β”‚   └── theme/            # App theming
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ models/           # Data models with JSON serialization
β”‚   β”œβ”€β”€ repositories/     # Repository pattern implementation
β”‚   └── providers/        # Riverpod providers
β”œβ”€β”€ domain/
β”‚   β”œβ”€β”€ entities/         # Business logic entities
β”‚   β”œβ”€β”€ repositories/     # Repository interfaces
β”‚   └── use_cases/        # Business logic use cases
└── presentation/
    β”œβ”€β”€ screens/          # UI screens
    β”œβ”€β”€ widgets/          # Reusable UI components
    └── providers/        # State management

πŸ”§ Configuration

Environment Variables

Create a .env file (see .env.example):

SUPABASE_URL=your_supabase_url_here
SUPABASE_ANON_KEY=your_anon_key_here
GOOGLE_MAPS_API_KEY=your_google_maps_key_here

Supabase Setup

  1. Create a Supabase project at https://supabase.com
  2. Get your project URL and anon key from Settings > API
  3. Configure environment variables
  4. Set up database tables using the provided migration scripts

Google Maps API

  1. Enable Google Maps SDK for Web in Google Cloud Console
  2. Generate API key with required permissions
  3. Add to environment variables

πŸš€ Deployment

Automated GitHub Pages Deployment

Every push to main branch automatically:

  1. βœ… Triggers GitHub Actions workflow
  2. πŸ”¨ Builds optimized Flutter web app
  3. πŸ“¦ Packages PWA with offline support
  4. πŸš€ Deploys to GitHub Pages
  5. 🌐 Makes available at https://bushels.github.io/HaulPass

Required GitHub Secrets

Add these secrets in repository Settings > Secrets and variables > Actions:

  • SUPABASE_URL: Your Supabase project URL
  • SUPABASE_ANON_KEY: Your Supabase anonymous key

Manual Deployment

# Build web version
flutter build web --release

# Deploy to gh-pages branch
flutter build web
cd build/web
git init
git add -A
git commit -m 'deploy'
git push -f <repo_url> master:gh-pages

πŸ“± PWA Features

  • Installable: Add to home screen on mobile/desktop
  • Offline Support: Basic functionality without internet
  • Push Notifications: Real-time alerts and updates
  • Responsive Design: Optimized for all screen sizes
  • App-like Experience: Standalone display mode

πŸ§ͺ Testing

# Run all tests
flutter test

# Run tests with coverage
flutter test --coverage

# Run integration tests
flutter drive --target=test_driver/app.dart

# Test web version
flutter test -d chrome

πŸ“ˆ Performance

  • Web Build Size: ~12MB (optimized)
  • Load Time: <3 seconds on average connection
  • Lighthouse Score: 95+ (Performance, Accessibility, Best Practices)
  • PWA Rating: 100/100 (Manifest, Service Worker)

πŸ”’ Security

  • βœ… No hardcoded API keys
  • βœ… Environment variable validation
  • βœ… Secure Supabase integration
  • βœ… HTTPS enforced in production
  • βœ… Content Security Policy headers
  • βœ… XSS protection enabled

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“‹ Development Roadmap

Phase 1: Foundation & Core Workflow (Weeks 1-4)

  • Extended user onboarding (farm, binyard, truck details)
  • Complete haul workflow implementation (7 phases)
  • Haul session state machine
  • Timer display with color coding
  • Single favorite elevator selection

Phase 2: Queue Intelligence (Weeks 5-8)

  • Queue entry and position tracking
  • Cross-validation between users
  • Wait time calculation algorithm
  • Real-time queue updates
  • Notification system

Phase 3: Analytics & Polish (Weeks 9-12)

  • Personal analytics dashboard
  • Daily summary generation
  • Historical pattern analysis
  • Performance optimization
  • Production launch preparation

See GAP_ANALYSIS_AND_ROADMAP.md for detailed implementation plan

πŸ› Bug Reports

Use GitHub Issues with:

  • Clear description of the issue
  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details
  • Screenshots if applicable

πŸ“š Documentation

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Flutter team for the amazing framework
  • Supabase for the backend-as-a-service platform
  • Riverpod team for excellent state management
  • GitHub for hosting and CI/CD capabilities

Built with ❀️ for the grain hauling industry

🌐 Live Demo | πŸ“§ Contact

About

Grain Elevator Wait time app

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages