API e portal web Laravel para histórico de manutenções veiculares, importação de CRLV-e, notas fiscais (PDF/XML) e exportação de relatórios.
App mobile:
vehicle_maintenance_frontend
| Camada | Tecnologia |
|---|---|
| Runtime | PHP 8.2+ · Laravel 12 |
| Auth | Laravel Sanctum · Socialite (OAuth) |
| DB | SQLite (dev) · MySQL 8 (Docker) |
| Cache / queue | Redis · database queue |
| DomPDF · PDF Parser · FPDI | |
| Push | Firebase Admin (kreait/firebase-php) |
| Front web | Blade · Vite · Tailwind |
- PHP 8.2+ com extensões comuns do Laravel (
pdo_sqliteoupdo_mysql,mbstring,openssl,tokenizer,xml,ctype,json,bcmath,fileinfo,gd) - Composer 2.x
- Node.js 20+ e npm (assets Vite)
- Ou Docker + Docker Compose (MySQL + Redis + app)
git clone https://github.com/fellipesg/vehicle_maintenance.git
cd vehicle_maintenance
composer install
cp .env.example .env
php artisan key:generate
# SQLite (padrão do .env.example)
touch database/database.sqlite
php artisan migrate
# opcional: php artisan db:seed
npm install
npm run build
composer run devO script composer run dev sobe, em paralelo:
php artisan serve(API + portal)- queue worker
- Vite (
npm run dev) - logs (
pail)
App: http://127.0.0.1:8000
API: http://127.0.0.1:8000/api/v1
Em alguns ambientes a porta
8000já está ocupada. Usephp artisan serve --port=8080e ajusteAPP_URL.
cp .env.example .env
# Ajuste DB_* para MySQL do compose, por exemplo:
# DB_CONNECTION=mysql
# DB_HOST=db
# DB_PORT=3306
# DB_DATABASE=vehicle_maintenance
# DB_USERNAME=vehicle_user
# DB_PASSWORD=root
docker compose up -d --build
docker compose exec app composer install
docker compose exec app php artisan key:generate
docker compose exec app php artisan migrateServiços típicos do docker-compose.yml: app, MySQL 8, Redis 7, Nginx (conforme configuração do projeto).
Copie .env.example → .env. Principais chaves:
| Variável | Descrição |
|---|---|
APP_KEY |
Gerada por php artisan key:generate |
APP_URL |
URL pública (importante para OAuth e links) |
DB_* |
Conexão SQLite ou MySQL |
FILESYSTEM_DISK |
local ou s3 |
AWS_* |
Credenciais S3 (se usar storage remoto) |
GOOGLE_* / FACEBOOK_* / TWITTER_* |
OAuth Socialite |
| Firebase credentials | Conta de serviço para FCM (fora do git) |
Nunca committe .env, chaves privadas ou JSON de service account.
composer test
# ou
php artisan testCom Docker:
docker compose exec app php artisan testAlém da API REST, o backend inclui rotas Blade para:
- Usuário — veículos, manutenções, importação CRLV, exportação PDF
- Oficina / Garage — fluxos de oficina e consignação
- Admin — catálogo de marcas/modelos
Após login no browser, navegue pelas rotas em routes/web.php.
Prefixo: /api/v1
| Recurso | Exemplos |
|---|---|
| Auth | POST /register, POST /login, POST /logout, GET /me |
| Vehicles | CRUD + GET /vehicles/{id}/maintenances + export PDF |
| Maintenances | CRUD |
| Invoices | upload / download |
| Workshops | listagem e gestão |
Autenticação: Bearer token (Sanctum).
app/
Http/Controllers/Api/ # API REST
Http/Controllers/Web/ # Portal Blade
Services/ # CRLV, NF-e, ownership, catálogo
Models/
database/migrations/
resources/views/ # Blade + PDF
routes/api.php
routes/web.php
tests/
composer run setup # install + .env + migrate + npm build
composer run dev # serve + queue + vite + logs
composer run test
vendor/bin/pint # estilo de código.env, caches evendor/estão no.gitignore- Não versionar dumps SQLite locais nem
storage/logs - Credenciais Firebase/OAuth apenas em ambiente local ou secrets de CI
MIT