javier 14758136b6 feat(api): mobile API Milestones 5+6 — media upload, sync_logs idempotency, OpenAPI
Milestone 5 (media):
- POST /api/v1/media — multipart upload, attaches to feature/issue/project/
  phase/layer, idempotent by uuid, authz member + 'upload media'. Added
  uuid+client_updated_at to media.
- Bundle now includes a 'media' array (URLs) for the project's project/feature/
  issue attachments (delta-aware).

Milestone 6 (hardening + docs):
- sync_logs table/model: every applied op is logged; /sync short-circuits on a
  repeated op uuid -> 'duplicate' (true idempotency for updates too, not just
  creates).
- Rate limiting on login (10/min), sync (60/min), media (120/min).
- docs/openapi.yaml: OpenAPI 3 contract for the mobile team.

Tests: 18 passing (added media upload idempotency + sync_logs idempotency).
The mobile API (Milestones 1-6) is now feature-complete on the webapp side.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 10:23:50 +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%