Backend REST en Laravel 10 para tareas, categorías, etiquetas y comentarios.
JSON bajo /api/v1 · autenticación por token · listo para cualquier frontend.
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan serveRequiere PHP 8.3 (extensión
pdo_pgsql), Composer 2 y PostgreSQL 18. ConfiguraDB_*yFRONTEND_URL(allowlist de CORS) en el.envantes de migrar. Las credenciales del seeder salen deADMIN_*/DEMO_*; si dejas el*_PASSWORDvacío, se genera una al azar y se imprime. No fijes una contraseña real en.env.example.
- 🔐 Auth por token (Sanctum, login por email) ·
- ✅ Tareas con papelera (soft delete, restaurar, borrar definitivo) ·
- 🏷️ Categorías y etiquetas privadas por usuario ·
- 💬 Comentarios públicos con moderación ·
- 🛡️ Roles
admin/user+ catálogo de permisos · - 🚦 Rate limiting · 🌐 CORS allowlist.
Vertical slice: cada entidad vive en app/Modules/<X>/, autocontenida. El controlador solo orquesta; la lógica va en Actions.
flowchart LR
C([Frontend]) -- "Bearer" --> R[routes] --> M{auth · admin} --> K[Controller]
K --> Q[Request<br/>valida]
K --> A[Action<br/>lógica] --> P[(Eloquent + Policy)]
K --> S[Resource] -- "JSON" --> C
app/Modules/<Modulo>/
├── <Modulo>Controller.php Orquesta: Request → Action → Resource
├── <Modulo>.php Modelo Eloquent
├── routes.php Rutas del módulo (montadas en /api/v1)
├── Actions/ Lógica: una clase por operación
├── Requests/ Validación (contrato de entrada)
├── Resources/ Forma del JSON (contrato de salida)
├── Policies/ Permisos por recurso
├── Exceptions/ Reglas de negocio (ej. borrado con dependientes)
└── Middleware/ Solo si hace falta (ej. admin)
php artisan route:list # ver rutas
php artisan db:seed # recrear admin y demo
php artisan migrate:fresh --seed # rehacer la BD (borra datos)
./vendor/bin/pint # formato de código