Skip to content

thisispivi/CarsManager

Repository files navigation

Cars Manager Banner

Cars Manager

Flutter Dart Riverpod GoRouter Android iOS Web AI Generated

Cars Manager is a local-first vehicle companion for tracking fuel, maintenance, insurance, taxes, fines, repairs, deadlines, and ownership costs from one calm dashboard.


Table of Contents


Features

  • Vehicle dashboard β€” active car hero, monthly summary, recent activity, quick actions, and upcoming deadlines.
  • Garage management β€” add, edit, delete, and switch vehicles with image-led cards and status indicators.
  • Vehicle detail pages β€” overview, fuel, expenses, and timeline tabs for each car.
  • Fuel tracking β€” fuel entries, total spend, liters/kWh, average prices, and year-based charts.
  • Expense tracking β€” insurance, inspection, tax, repair, and fine records with category-specific views.
  • Reminders β€” local notifications for insurance, inspection, and tax due dates.
  • Analytics β€” total cost overview, category breakdown, cost per car, monthly trend table, and CSV export.
  • Search β€” global search across vehicles and tracked records.
  • Settings β€” theme, language, units, currency, notification preferences, export, reset, and app info.
  • Internationalisation β€” English and Italian UI through Flutter gen-l10n.
  • Responsive layout β€” bottom navigation on mobile, navigation rail on tablet, sidebar on desktop.
  • Cross-platform β€” Android, iOS, web, Windows, macOS, and Linux project targets.

Screenshots

Dashboard Garage Analytics
Cars Manager dashboard in light mode Cars Manager garage in light mode Cars Manager analytics in light mode
Cars Manager dashboard in dark mode Cars Manager garage in dark mode Cars Manager analytics in dark mode

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Flutter App        β”‚
β”‚  Material + Router  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ GoRouter routes
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Feature Screens β”‚ ◄───► β”‚ Riverpod Providers β”‚
β”‚  Home/Garage/etc.β”‚       β”‚ App state + logic  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Shared UI System β”‚       β”‚ Local Persistence  β”‚
β”‚ Widgets + tokens β”‚       β”‚ JSON / localStorageβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Cars Manager keeps the app local-first: vehicle data is stored on-device, while the UI is built around Riverpod state, GoRouter navigation, Freezed models, and shared design tokens.


Getting Started

Prerequisites

Tool Version
Flutter stable channel
Dart bundled with Flutter
Node.js >= 20, only for repository tooling
npm >= 10, only for repository tooling

Run Locally

git clone https://github.com/thisispivi/CarsManager.git
cd CarsManager
npm install

cd cars_manager
flutter pub get
flutter run

For web:

cd cars_manager
flutter run -d chrome

Useful Commands

# From repository root
npm run verify
npm run analyze
npm run test
npm run build:android
npm run build:web
# From cars_manager/
flutter pub get
flutter gen-l10n
dart run build_runner build --delete-conflicting-outputs
flutter analyze
flutter test

Builds and Release

Android APK

Build release APKs split by device architecture:

cd cars_manager
flutter build apk --release --split-per-abi

Output files:

ABI APK
ARM 64-bit build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
ARM 32-bit build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
x86 64-bit build/app/outputs/flutter-apk/app-x86_64-release.apk

Build one universal APK instead:

cd cars_manager
flutter build apk --release

Universal APK output:

build/app/outputs/flutter-apk/app-release.apk

Web

cd cars_manager
flutter build web --release

Output:

build/web/

GitHub Release

The repository has a release workflow that runs tests, builds APKs, builds web, and publishes APK files to a GitHub Release when a version tag is pushed.

# 1. Update version in cars_manager/pubspec.yaml
# Example:
# version: 2.0.1+2

git add cars_manager/pubspec.yaml CHANGELOG.md
git commit -m "chore(release): v2.0.1"
git tag v2.0.1
git push origin main --tags

Beta tags are supported:

git tag v2.0.1-beta.1
git push origin main --tags

After the workflow finishes, download APKs from the GitHub Release page or from the workflow artifacts.


Configuration

File Purpose
cars_manager/pubspec.yaml Flutter dependencies, assets, version, package metadata
cars_manager/flutter_launcher_icons.yaml Launcher icon generation settings
cars_manager/flutter_native_splash.yaml Native splash screen generation settings
cars_manager/l10n.yaml Localization generation settings
cars_manager/assets/data/cars.json Seed/sample vehicle data
cars_manager/lib/l10n/app_en.arb English strings
cars_manager/lib/l10n/app_it.arb Italian strings

Regenerate launcher icons:

cd cars_manager
dart run flutter_launcher_icons

Regenerate splash screens:

cd cars_manager
dart run flutter_native_splash:create --path=flutter_native_splash.yaml

Project Structure

CarsManager/
β”œβ”€β”€ .github/
β”‚   └── workflows/                 # CI, release, and web deploy workflows
β”œβ”€β”€ cars_manager/
β”‚   β”œβ”€β”€ android/                   # Android runner project
β”‚   β”œβ”€β”€ ios/                       # iOS runner project
β”‚   β”œβ”€β”€ linux/                     # Linux runner project
β”‚   β”œβ”€β”€ macos/                     # macOS runner project
β”‚   β”œβ”€β”€ web/                       # Web runner assets and manifest
β”‚   β”œβ”€β”€ windows/                   # Windows runner project
β”‚   β”œβ”€β”€ assets/
β”‚   β”‚   β”œβ”€β”€ data/                  # Seed data
β”‚   β”‚   └── icons/                 # App logo and SVG category icons
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ app/                   # App root, router, app-level state
β”‚   β”‚   β”œβ”€β”€ core/                  # Theme, services, storage, utilities
β”‚   β”‚   β”œβ”€β”€ design_system/         # Shared atoms, molecules, charts, organisms
β”‚   β”‚   β”œβ”€β”€ features/              # Home, garage, analytics, settings, onboarding
β”‚   β”‚   β”œβ”€β”€ l10n/                  # ARB files and generated localizations
β”‚   β”‚   β”œβ”€β”€ models/                # Domain models
β”‚   β”‚   β”œβ”€β”€ presentation/          # Shared presentation widgets and migrated pages
β”‚   β”‚   └── main.dart              # Application bootstrap
β”‚   β”œβ”€β”€ test/                      # Unit and widget tests
β”‚   └── integration_test/          # Integration smoke tests
β”œβ”€β”€ scripts/                       # Repository helper scripts
β”œβ”€β”€ package.json                   # Root automation scripts
└── README.md

License

MIT - Copyright (c) 2025 Andrea Piras

About

πŸš—πŸ”§ Cars Manager is a local-first vehicle companion app for keeping every car organized. It tracks fuel, maintenance, insurance, taxes, repairs, fines, reminders, and ownership costs, with dashboards, analytics, charts, search, and CSV export across a responsive cross-platform Flutter experience.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors