Overview
O que o checklist-mobile faz e como se encaixa nos outros serviços
Gestão de frota e checklist de veículos. Motoristas e técnicos executam inspeções em campo pelo app mobile (fotos, GPS, odômetro, itens de checklist por categoria) e o backend administra veículos, implementos, manutenções, pneus, motoristas e filiais.
É a única aplicação com clientes reais provisionados no cluster hoje: um namespace k3s por cliente, cada um com seu próprio banco, storage e domínio (<slug>.frota.memphislab.com.br).
Stack
Backend:
- PHP 8.4, Laravel 13, Laravel Octane sobre FrankenPHP — por que worker persistente e o que isso muda no código: runtime
- Filament 5 — painel admin
- Arquitetura modular via
internachi/modular:branches,checklist,dashboards,drivers,fleet,licensing,maintenance,parameters,reports,tires - PostgreSQL + Redis
- Autenticação de API própria via JWT HS256 (
firebase/php-jwt), não Sanctum — o painel admin usa sessão separada. Por que HS256 aqui: mobile-architecture
Mobile (mobile-app/):
- React Native + Expo (Expo Router, roteamento por arquivo)
- TypeScript, Zustand (estado), TanStack Query (data-fetching), Axios
expo-sqlitepara operação offline-first (execução de checklist sem conectividade em campo, sincroniza depois) — mecanismo de sync em mobile-architecture- Zod + React Hook Form para formulários
Backend e mobile vivem no mesmo repositório e são buildados juntos: a imagem de produção do backend também serve um build web estático do Expo (npx expo export --platform web), além dos builds nativos que os devs rodam via Expo.
Relação com outros serviços
Consome a API do license-manager diretamente — não existe intermediário. Cada instância de cliente autentica com um LICENSE_SERIAL_KEY próprio contra POST /api/v1/oauth/token e consulta GET /api/v1/license para saber quais módulos (fleet, checklist, maintenance) estão liberados. Essa checagem hoje está desligada em produção: a instância compartilhada demo roda com LICENSE_ENFORCE=false e LICENSE_MANAGER_URL vazio, então nenhum módulo é bloqueado por licença.
Quando o key-service existir, ele vai passar a mediar essa comunicação — o checklist-mobile vai falar com ele em vez de falar direto com o license-manager. Essa mudança ainda não foi implementada.