javier 17a824f925 feat(api): mobile API Milestone 1+2 — Sanctum auth + offline sync vertical slice
Milestone 1 (auth foundation):
- Installed laravel/sanctum; HasApiTokens on User; published config + migration.
- routes/api.php with /api/v1; Sanctum 'ability' middleware alias registered.
- AuthController: POST login (long-lived revocable device token w/ ability
  mobile-sync + devices table), GET me, POST logout. New Device model/table.

Milestone 2 (vertical slice, offline-first):
- progress_updates: +uuid (client-generated) +client_updated_at.
- ProjectApiController: GET projects (accessibleBy), GET projects/{id}/bundle
  (project/phases/layers/features, membership-authorized).
- SyncController: POST sync — batch ops, idempotent by uuid, per-op result
  (applied/duplicate/error), server-set user_id, authz by permission+membership.
  Currently handles progress_update.create.

Tests: tests/Feature/Api/MobileApiTest (9 passing) — auth, accessible projects,
bundle authz, sync apply+idempotency, permission enforcement.

Also fixed a latent schema bug: projects.reference (and external_reference_1)
existed in the live DB but had no migration — added a guarded migration so fresh
installs match production.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:05:20 +02:00
2026-05-07 23:31:33 +02:00

Avante

Sistema de gestión de proyectos de construcción con mapas interactivos, control de progreso, inspecciones y soporte offline.

Características

  • Mapas interactivos — Visualización de proyectos sobre mapa con capas (GeoJSON/KML) y elementos editables
  • Gestión de fases — Proyectos organizados en fases con progreso porcentual y seguimiento histórico
  • Capas y elementos — Subida de archivos GeoJSON/KML, capas vacías editables con color personalizado
  • Inspecciones — Plantillas de inspección por proyecto, asignables a elementos del mapa
  • Progreso — Seguimiento visual del progreso por fase y global del proyecto
  • Sincronización offline — Endpoints para trabajadores en campo, sincronización diferida
  • Permisos — Roles y permisos granulares (Spatie Permission)
  • Dashboard — Estadísticas globales, proyectos recientes, inspecciones

Requisitos

  • PHP 8.2+
  • MySQL/MariaDB
  • Composer
  • Node.js + NPM

Instalación

git clone <repo-url> construprogress
cd construprogress
composer install
npm install && npm run build
cp .env.example .env
# Editar .env con credenciales de base de datos
php artisan key:generate
php artisan migrate
php artisan db:seed --class=RolePermissionSeeder  # si existe
php artisan serve

Stack técnico

  • Framework: Laravel 11
  • Frontend: Tailwind CSS + DaisyUI + Leaflet.js
  • Mapas: Leaflet + Leaflet Draw (editor gráfico)
  • Componentes: Livewire 3
  • Base de datos: MySQL/MariaDB
  • Autenticación: Laravel Breeze
S
Description
App Laravel para el seguimiento y revisión de obra
Readme 1.3 MiB
Languages
Blade 51.1%
PHP 47.6%
JavaScript 1.3%