Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Joule — Electrician Quote App

Professional quote management for Ontario electricians. Built with Dieter Rams design principles.

Overview

Joule is a web-first Flutter application designed for electricians in Ontario, Canada. The primary use case is creating and managing quotes on a desktop/laptop, with mobile access as a secondary benefit.

Key Features:

  • Quick Quote Builder — Create professional quotes in under 2 minutes
  • 15 Job Templates — Pre-built templates for common electrical jobs
  • 50+ Materials — Pre-loaded catalog with Canadian pricing
  • PDF Generation — CRA-compliant professional quotes
  • True Profitability — Track actual profit including overhead
  • Contract Generation — Professional contracts from templates
  • Expense Tracking — Link expenses to jobs, export to CSV

Design Philosophy

Following Dieter Rams' 10 Principles of Good Design:

  1. Innovative — Solves real problems for electricians
  2. Useful — Functionality first, aesthetics serve usability
  3. Aesthetic — Clean, professional appearance
  4. Understandable — Self-explanatory interface
  5. Unobtrusive — Design recedes, content forward
  6. Honest — No dark patterns or manipulation
  7. Long-lasting — Timeless design, not trendy
  8. Thorough — Every detail considered
  9. Environmentally friendly — Efficient, performant
  10. As little design as possible — Less, but better

Quick Start

Prerequisites

  • Flutter 3.0+
  • Dart SDK

Installation

# Clone and navigate
cd /Users/fevra/Apps/Blais/claudette/Joule

# Get dependencies
flutter pub get

# Generate code (required)
dart run build_runner build --delete-conflicting-outputs

# Run on web (primary platform)
flutter run -d chrome

# Run on macOS
flutter run -d macos

# Run on iOS (secondary)
flutter run -d ios

Project Structure

Joule/
├── lib/
│   ├── core/                    # Core infrastructure
│   │   ├── constants/           # App constants
│   │   ├── database/            # Drift database + tables
│   │   ├── providers/           # Riverpod providers
│   │   ├── routing/             # go_router configuration
│   │   ├── services/            # Business logic services
│   │   ├── theme/               # Dieter Rams theme
│   │   └── utils/               # Validators, logger
│   ├── features/                # Feature modules
│   │   ├── contracts/           # Contract templates
│   │   ├── customers/           # Customer management
│   │   ├── expenses/            # Expense tracking
│   │   ├── home/                # Dashboard
│   │   ├── intake/              # Lead capture
│   │   ├── materials/           # Materials catalog
│   │   ├── profitability/       # Profit analysis
│   │   ├── quotes/              # Quote builder
│   │   ├── settings/            # Business profile
│   │   └── templates/           # Job templates
│   ├── widgets/                 # Reusable widgets
│   └── main.dart
├── docs/                        # Documentation
│   ├── design/                  # UI mockups
│   ├── guides/                  # Implementation guides
│   └── research/                # Market research
├── .history/                    # Development history
└── test/                        # Tests

Database

Uses Drift (SQLite ORM) with platform-specific storage:

  • Web: IndexedDB (browser-encrypted)
  • Native: SQLite with SQLCipher encryption

This configuration is optimal for web-first use while maintaining mobile compatibility.

Feature Status

Phase 1: MVP Core — Complete ✅

  • Quick Quote Builder
  • 15 Job Templates (Tier 1 + Tier 2 + Tier 3)
  • Materials Catalog (50+ items)
  • Customer Management
  • PDF Quote Generation (CRA-compliant)
  • Quote Lifecycle (draft/sent/won/lost)
  • Settings & Business Profile

Phase 2: Intelligence — Complete ✅

  • Intake Form (lead capture)
  • Lead Source Tracking (marketing ROI)
  • Expense Tracking (photo, categories, job linking)
  • True Job Profitability (overhead allocation)
  • Contract Templates (4 types)
  • CSV Export

Phase 3: Future

  • Cloud Sync (Supabase)
  • Invoice OCR (supplier pricing)
  • QuickBooks Integration
  • Google Calendar Sync

Job Templates Included

Tier 1 — MVP:

  • 200A Panel Upgrade
  • EV Charger Installation
  • Pot Light Installation
  • Service Call
  • Custom Quote

Tier 2 — High Priority:

  • Sub-Panel Installation
  • Kitchen Circuit Upgrade
  • Hot Tub / Spa Wiring
  • Dedicated Circuit
  • Smart Switch Installation

Tier 3 — Medium Priority:

  • 100A Panel Replacement
  • Bathroom Circuit & Fan
  • Smoke/CO Detectors
  • Outdoor GFCI Outlet
  • Generator Transfer Switch

Ontario Compliance

  • ESA Permit Fees: $84 (contractor rate)
  • HST Calculation: 13% on (subtotal + markup)
  • CRA Compliance: All required invoice fields included
  • OESC 2024: Code references in templates

Tech Stack

Component Technology
Framework Flutter 3.x
State Riverpod 3.0
Database Drift (SQLite)
Routing go_router
PDF pdf + printing
Design Dieter Rams principles

Development

# Watch for changes and regenerate
dart run build_runner watch

# Run tests
flutter test

# Analyze code
flutter analyze

License

Private — Blais Electrical Services


"Less, but better." — Dieter Rams

About

Web-first Flutter app for electricians: quotes, PDFs, job templates, invoices, and contract workflows with a minimal, product-first UI.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages