Skip to content

leobaray/BoxJM

Repository files navigation

BOX JM — Flutter

App Flutter para orçamentos de estética automotiva. Port do app original BOX JM para Flutter, mantendo o mesmo backend Supabase.

Visão geral

Aplicativo de orçamentos para estética automotiva com catálogo de serviços, criação de orçamentos personalizados e sincronização offline. Permite selecionar serviços por categoria (exterior, interior, proteção, detailing), definir tipo de veículo (pequeno, médio, grande, SUV, caminhão), calcular totais automaticamente e compartilhar orçamentos.

Funcionalidades

  • Catálogo de serviços organizado por categoria (exterior, interior, proteção, detailing)
  • Criação de orçamentos com seleção de serviços, quantidade e cálculo automático de totais
  • Tipos de veículo com dimensionamento de preço (pequeno, médio, grande, SUV, caminhão)
  • Offline-first com SharedPreferences e fila de sincronização quando volta online
  • Compartilhamento de orçamentos via share_plus
  • Banner de conectividade indicando status online/offline
  • Detalhe e edição de orçamentos existentes

Setup

flutter pub get
flutter run

Credenciais Supabase ficam em .env (mesmas tabelas: budgets e custom_services).

Schema do banco

O arquivo schema.sql contém o schema completo para criar as tabelas no Supabase (services, budgets, custom_services). Cole no SQL Editor do Supabase e execute.

Arquitetura (Clean Architecture)

lib/
├── core/            theme, constantes, supabase init, utils
├── domain/          entities + repositories abstratas (sem deps externas)
│   ├── entities/     Budget, ServiceItem, VehicleType
│   └── repositories/ BudgetRepository, CatalogRepository
├── data/            datasources (supabase/local) + repositories impl + sync
│   ├── datasources/  BudgetRemoteDatasource, CatalogRemoteDatasource, LocalStorageDatasource
│   └── repositories/ BudgetRepositoryImpl, CatalogRepositoryImpl, SyncService
└── presentation/    providers Riverpod + pages + widgets + router
    ├── pages/        HomePage, ServicesPage, NewBudgetPage, BudgetDetailPage
    ├── providers/    Riverpod providers
    ├── widgets/      BudgetCard, GradientButton, ConnectivityBanner, etc.
    └── router.dart   GoRouter configuration

Stack

  • State: Riverpod (AsyncNotifier)
  • Routing: go_router
  • Backend: Supabase (PostgreSQL)
  • Offline: SharedPreferences + fila de sync quando volta online
  • Compartilhamento: share_plus
  • UUID: uuid package

Licença

MIT

About

BOX JM — App Flutter de orçamentos de estética automotiva com Supabase.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages