Appearance
PROXIMITI — End-to-End Value Stream
Maps 271 capabilities across 7 value stream stages — from platform onboarding through parcel delivery, exception handling, and administration.
Stage 1: Onboarding & Setup
Platform provisioning, infrastructure deployment, user identity, center catalog creation, provider integration, and application bootstrap. This stage covers everything required before the first parcel enters the system. All actors and systems must be configured and operational before the value stream can begin.
Actors: Admin, DevOps
| ID | Module | Capability |
|---|---|---|
| INFRA-01 | Infrastructure | Full local stack orchestration — 8 microservices, PostgreSQL, Keycloak, MinIO, Zipkin |
| INFRA-02 | Infrastructure | Service health checks with depends_on conditions |
| INFRA-03 | Infrastructure | Named volumes for data persistence — postgres-data, keycloak-data, minio-data |
| INFRA-04 | Infrastructure | Environment variable configuration per service with docker-default fallbacks |
| INFRA-05 | Infrastructure | Multi-stage Dockerfile builds for all Java services |
| INFRA-06 | Infrastructure | Extension initialization — uuid-ossp, pg_trgm (00_extensions.sql) |
| INFRA-07 | Infrastructure | Core schema — tp_pprx_centro, tp_pprx_envio, tp_pprx_usuario, tp_pprx_historial_estado (01_schema.sql) |
| INFRA-08 | Infrastructure | Seed data — test centers, users, shipments in all estados (02_seed.sql) |
| INFRA-09 | Infrastructure | Expired schema — ALINA outbox and DLQ tables (03_expired_schema.sql) |
| INFRA-10 | Infrastructure | Issues schema — tp_pprx_incidencia, tp_pprx_incidencia_audit (05_issues_schema.sql) |
| INFRA-11 | Infrastructure | Adapter schema — tp_pprx_sync_centro, tp_pprx_sync_log (06_adapter_schema.sql) |
| INFRA-12 | Infrastructure | Notifications user schema — tp_pprx_notificacion_usuario (07_notifications_user_schema.sql) |
| INFRA-13 | Infrastructure | Customer schema — tp_pprx_cliente, tp_pprx_direccion_cliente (08_customer_schema.sql) |
| INFRA-14 | Infrastructure | v2.5 migrations — fecRecepcion, fecEntrega, fecCaducidad columns, estado history enrichment (09_v25_migrations.sql) |
| INFRA-15 | Infrastructure | v2.5 seed data — enriched shipments with realistic timestamps (10_v25_seed.sql) |
| INFRA-16 | Infrastructure | Profile photo schema — url_foto_perfil column on tp_pprx_usuario (11_profile_photo.sql) |
| INFRA-17 | Infrastructure | BIGINT GENERATED ALWAYS AS IDENTITY for all primary keys |
| INFRA-18 | Infrastructure | CHECK constraints on estado fields with valid state enumerations |
| INFRA-19 | Infrastructure | Realm export with proximiti realm configuration (realm-export.json) |
| INFRA-20 | Infrastructure | Test users — pudo-operator-1, carrier-1, admin-1, customer-1 (all password: password) |
| INFRA-21 | Infrastructure | Client configuration — proximiti-bff with client secret |
| INFRA-22 | Infrastructure | Role mapping — USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER realm roles |
| INFRA-23 | Infrastructure | center_code user attribute mapped to JWT claim via oidc-usermodel-attribute-mapper |
| INFRA-24 | Infrastructure | KC_HOSTNAME=keycloak for consistent issuer across containers and host |
| INFRA-25 | Infrastructure | S3-compatible object storage for POD images and contract documents |
| INFRA-26 | Infrastructure | Bucket auto-creation on startup — proximiti-pod, proximiti-documents, proximiti-photos |
| INFRA-27 | Infrastructure | Distributed tracing collector for all microservice spans |
| INFRA-28 | Infrastructure | Micrometer Brave integration for automatic span propagation |
| INFRA-29 | Infrastructure | reset-local.sh — teardown and rebuild script for fresh local environment |
| INFRA-30 | Infrastructure | Keycloak sub sync script — update tp_pprx_usuario with real Keycloak sub values |
| INFRA-31 | Infrastructure | env/ directory with per-service environment files for Docker Compose |
| INFRA-32 | Infrastructure | /etc/hosts requirement — 127.0.0.1 keycloak for browser-accessible token issuer |
| USR-01 | Users | Resolve user center by Keycloak sub — returns centerId + centerCode |
| USR-02 | Users | Provision new user on first login — creates tp_pprx_usuario record |
| USR-03 | Users | List all users with pagination |
| USR-04 | Users | Get user by ID |
| USR-05 | Users | Update user role and center assignment |
| USR-06 | Users | Get profile photo URL for authenticated user |
| USR-07 | Users | Update profile photo URL |
| USR-08 | Users | Delete profile photo URL |
| USR-09 | Users | Get customer profile by Keycloak sub |
| USR-10 | Users | Update customer profile |
| USR-11 | Users | Provision customer on first login |
| USR-12 | Users | List saved addresses for customer |
| USR-13 | Users | Create address |
| USR-14 | Users | Update address |
| USR-15 | Users | Delete address |
| CNTR-01 | Centers | List all centers with pagination and optional provider filter |
| CNTR-02 | Centers | Get center detail by code with ETag version header |
| CNTR-03 | Centers | Create new PUDO center — admin only, returns 201 with Location header |
| CNTR-04 | Centers | Update center with If-Match ETag optimistic locking — admin only |
| CNTR-05 | Centers | Soft delete center — admin only, 204 No Content |
| CNTR-06 | Centers | Generate presigned upload token for contract document — PDF only, 5MB max |
| CNTR-10 | Centers | Resolve center code by numeric ID |
| CNTR-11 | Centers | Resolve center ID by center code |
| CNTR-13 | Centers | CenterAuthorizationService — center-scoped access control with admin bypass |
| CNTR-14 | Centers | MinIO integration for contract document storage with presigned URLs |
| CNTR-15 | Centers | JPA optimistic locking with version field for concurrent capacity updates |
| BFF-20 | BFF Gateway | List all users with pagination |
| BFF-21 | BFF Gateway | Get user by ID |
| BFF-22 | BFF Gateway | Update user role and center assignment |
| BFF-23 | BFF Gateway | List all centers with full detail |
| BFF-24 | BFF Gateway | Get center by code with ETag forwarding |
| BFF-25 | BFF Gateway | Create center |
| BFF-26 | BFF Gateway | Update center with If-Match ETag concurrency control |
| BFF-27 | BFF Gateway | Soft delete center |
| BFF-28 | BFF Gateway | Get seed data status with record counts by domain |
| BFF-29 | BFF Gateway | Load seed data with optional force overwrite |
| BFF-30 | BFF Gateway | Unload all seed data |
| BFF-32 | BFF Gateway | Trigger provider catalog sync — Kanguro or Hublocker |
| BFF-33 | BFF Gateway | List providers with center counts and sync status |
| BFF-56 | BFF Gateway | Upload profile photo to MinIO — max 2MB, JPEG/PNG/WebP |
| BFF-57 | BFF Gateway | Stream profile photo for authenticated user |
| BFF-58 | BFF Gateway | Delete profile photo from MinIO and clear URL |
| BFF-60 | BFF Gateway | Auto-provisioning on first login for all roles (USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER) |
| BFF-68 | BFF Gateway | MinIO ProfilePhotoStorage service for direct object storage operations |
| ADPT-01 | Adapter | Catalog sync — pull center catalog from Kanguro or Hublocker |
| ADPT-02 | Adapter | Center availability lookup by provider and center code |
| ADPT-03 | Adapter | Reception notification to provider — fire-and-forget |
| ADPT-04 | Adapter | Kanguro webhook receiver with signature validation |
| ADPT-05 | Adapter | Hublocker webhook receiver with signature validation |
| ADPT-06 | Adapter | ProviderAdapterRegistry — pluggable adapter pattern with KanguroAdapter and HublockerAdapter implementations |
| CP-01 | Client Portal | Keycloak OIDC login with PKCE flow via keycloak-js adapter |
| CP-02 | Client Portal | Silent token refresh with automatic retry |
| CP-03 | Client Portal | Role-based shell selection — AppShell (operator/admin/carrier) vs CustomerShell (customer) |
| CP-04 | Client Portal | RoleGuard component — redirects unauthorized users from protected routes |
| CP-37 | Client Portal | Operator profile page with photo upload and personal info editing |
| CP-43 | Client Portal | Customer profile with personal info and preferences |
| PUDO-01 | PUDO Manager | Keycloak OIDC login with secure token storage (flutter_secure_storage) |
| PUDO-02 | PUDO Manager | Automatic token refresh with retry logic |
| PUDO-03 | PUDO Manager | macOS keychain fix — FixedMacOsOptions for usesDataProtectionKeychain bug |
| CARR-01 | Carrier App | Keycloak OIDC login with prefixed storage keys (carrier_jwt_token) |
| CARR-02 | Carrier App | Automatic token refresh with secure storage |
| CARR-16 | Carrier App | Prefixed keychain storage to avoid conflict with PUDO Manager app |
Stage 2: Shipment Creation
A customer or operator creates a new shipment, selects a destination PUDO center, generates a label, and receives pricing estimation. This stage covers the full creation flow from address entry through label printing. The PUDO selector widget enables external e-commerce platforms to embed center selection.
Actors: Customer, Operator
| ID | Module | Capability |
|---|---|---|
| BFF-01 | BFF Gateway | Create shipment with idempotency key support |
| BFF-10 | BFF Gateway | Print-ready HTML label generation |
| BFF-14 | BFF Gateway | List all centers for operator dropdowns with field mapping |
| BFF-17 | BFF Gateway | Nearby center search with postal code geocoding, Haversine distance, availability |
| BFF-18 | BFF Gateway | Center detail with schedule, capacity, and photos |
| BFF-34 | BFF Gateway | Get customer profile with JWT fallback defaults |
| BFF-35 | BFF Gateway | Update customer profile |
| BFF-36 | BFF Gateway | List saved addresses |
| BFF-37 | BFF Gateway | Create address |
| BFF-38 | BFF Gateway | Update address |
| BFF-39 | BFF Gateway | Delete address |
| BFF-50 | BFF Gateway | List active pricing tiers |
| BFF-51 | BFF Gateway | Estimate shipping cost by weight |
| SHPM-01 | Shipments | Create shipment with idempotency key deduplication |
| SHPM-21 | Shipments | Print-ready HTML label with barcode, sender, recipient, center info |
| CP-13 | Client Portal | New shipment form with address autocomplete and center selection |
| CP-14 | Client Portal | Print label button with browser print dialog |
| CP-35 | Client Portal | Pricing calculator with weight-based cost estimation |
| CP-40 | Client Portal | Customer new shipment form with saved address selection |
| CP-42 | Client Portal | Customer address book — CRUD for saved addresses |
| CP-44 | Client Portal | Customer pricing calculator |
| WDGT-01 | PUDO Selector Widget | Postal code search with geocoding and nearby center results |
| WDGT-02 | PUDO Selector Widget | Search bar with debounced input and loading indicator |
| WDGT-03 | PUDO Selector Widget | Interactive map with center pins and distance indicators |
| WDGT-04 | PUDO Selector Widget | Map clustering for dense center areas |
| WDGT-05 | PUDO Selector Widget | Scrollable center list sorted by distance with availability badges |
| WDGT-06 | PUDO Selector Widget | Center detail panel with schedule, capacity, and photos |
| WDGT-07 | PUDO Selector Widget | Center card component with name, address, distance, and status |
| WDGT-08 | PUDO Selector Widget | Embeddable web component via <pudo-selector> custom element |
| WDGT-09 | PUDO Selector Widget | CSS custom properties for host application theming |
Stage 3: Carrier Transport
The carrier picks up parcels from the origin, transports them to the destination PUDO center, and completes the drop-off via the dual-QR handshake protocol. This stage covers batch operations, barcode scanning, and the cryptographic session exchange between carrier and operator apps. Provider adapters are notified upon reception.
Actors: Carrier, Operator
| ID | Module | Capability |
|---|---|---|
| BFF-04 | BFF Gateway | Carrier handshake initiation for dual-QR protocol |
| BFF-05 | BFF Gateway | QR session status polling |
| BFF-06 | BFF Gateway | QR session validation by PUDO operator |
| BFF-07 | BFF Gateway | List pending shipments for carriers |
| BFF-08 | BFF Gateway | Batch drop of multiple parcels at PUDO center |
| SHPM-12 | Shipments | Carrier handshake initiation — generates QR session token |
| SHPM-13 | Shipments | QR session status polling |
| SHPM-14 | Shipments | QR session validation by PUDO operator |
| SHPM-15 | Shipments | List pending shipments for carrier pickup |
| SHPM-16 | Shipments | Batch drop of multiple parcels at PUDO center |
| CNTR-08 | Centers | Atomic capacity decrement with If-Match ETag and X-Correlation-Id |
| CARR-03 | Carrier App | Carrier dashboard with pending delivery count and route summary |
| CARR-04 | Carrier App | Pending shipment list with pull-to-refresh |
| CARR-06 | Carrier App | Barcode scanner for parcel identification (mobile_scanner) |
| CARR-07 | Carrier App | Dual-QR handshake — carrier initiates session, generates QR for operator |
| CARR-08 | Carrier App | Batch drop flow — select multiple parcels for PUDO center delivery |
| CARR-09 | Carrier App | Batch confirmation with success/failure per parcel |
| CARR-13 | Carrier App | Hive local database for offline operation queue |
| CARR-14 | Carrier App | Automatic sync when network available |
| PUDO-07 | PUDO Manager | Dual-QR handshake — operator validates carrier session token |
| PUDO-12 | PUDO Manager | QR code display for carrier scanning |
| PUDO-13 | PUDO Manager | QR session polling with timeout and retry |
| ADPT-03 | Adapter | Reception notification to provider — fire-and-forget |
Stage 4: PUDO Reception
The PUDO operator receives parcels into the center, verifies barcodes, decrements capacity, and the system sends notifications to the customer. This stage covers the physical intake of parcels, capacity management, and all notification triggers that inform stakeholders of parcel arrival at the PUDO point.
Actors: Operator
| ID | Module | Capability |
|---|---|---|
| SHPM-06 | Shipments | State transition action dispatcher — receive, deliver, expire, retrieve |
| SHPM-07 | Shipments | RECEPCIONADO transition — validates center match, decrements capacity via centers service |
| CNTR-07 | Centers | Get current capacity by center ID |
| CNTR-09 | Centers | Atomic capacity increment with If-Match ETag and X-Correlation-Id |
| CNTR-12 | Centers | Centers summary with capacity data for admin dashboard |
| PUDO-04 | PUDO Manager | Operator dashboard with pending count and capacity usage |
| PUDO-05 | PUDO Manager | Quick action buttons — receive, deliver, scan |
| PUDO-06 | PUDO Manager | Parcel reception with barcode scanning (mobile_scanner) |
| PUDO-08 | PUDO Manager | Capacity check before reception with user-friendly error |
| PUDO-14 | PUDO Manager | Real-time capacity display with visual indicator |
| PUDO-15 | PUDO Manager | Capacity history and trend view |
| PUDO-17 | PUDO Manager | Hive local database for offline queue |
| PUDO-18 | PUDO Manager | Automatic sync on connectivity restore |
| NOTF-01 | Notifications | List notifications for center with pagination |
| NOTF-02 | Notifications | Get unread notification count |
| NOTF-03 | Notifications | Mark notification as read |
| NOTF-04 | Notifications | Trigger notification dispatch — creates user notification record |
| NOTF-05 | Notifications | NOVA stub integration — fire-and-forget pattern with 500ms timeout |
| BFF-42 | BFF Gateway | List notifications with center scoping |
| BFF-43 | BFF Gateway | Get unread notification count |
| BFF-44 | BFF Gateway | Mark notification as read |
| CP-21 | Client Portal | Notifications page with read/unread status and mark-as-read action |
| CP-22 | Client Portal | Notification bell badge with unread count in sidebar |
Stage 5: Customer Delivery
The customer arrives at the PUDO center, the operator captures proof of delivery (signature, photo, ID), and the parcel transitions to ENTREGADO. This stage covers the POD capture workflow, public tracking for end customers, and the shipment detail views that display delivery confirmation across all frontends.
Actors: Operator, Customer
| ID | Module | Capability |
|---|---|---|
| BFF-03 | BFF Gateway | Get shipment detail by barcode |
| BFF-11 | BFF Gateway | Get POD metadata |
| BFF-12 | BFF Gateway | Generate POD presigned upload token |
| BFF-13 | BFF Gateway | Stream POD image bytes via proxy — signature or evidence |
| BFF-19 | BFF Gateway | Unauthenticated shipment tracking by barcode |
| SHPM-03 | Shipments | Get shipment detail by barcode with estado history and POD data |
| SHPM-05 | Shipments | Public tracking by barcode — returns estado, timestamps, center codes |
| SHPM-08 | Shipments | ENTREGADO transition — requires POD (signature + evidence URLs), sets delivery timestamp |
| SHPM-18 | Shipments | Generate presigned upload token for POD images |
| SHPM-19 | Shipments | Get POD metadata — signature and evidence URLs |
| SHPM-20 | Shipments | Stream POD image bytes by type — signature or evidence |
| SHPM-25 | Shipments | MinIO DocumentStoragePort for POD image storage with presigned URLs and streaming retrieval |
| PUDO-09 | PUDO Manager | Delivery flow with POD capture — signature pad + camera photo + ID verification |
| PUDO-10 | PUDO Manager | POD upload via presigned URL to MinIO |
| PUDO-11 | PUDO Manager | Delivery confirmation with state transition to ENTREGADO |
| CP-09 | Client Portal | Shipment detail page with full lifecycle timeline and center info |
| CP-10 | Client Portal | TrackingStepper component — vertical stepper with branching paths (happy 3-step / expiry 6-step) |
| CP-11 | Client Portal | Retention countdown with urgency color coding (green > yellow > red) |
| CP-12 | Client Portal | POD display via BFF image proxy — signature and evidence photos |
| CP-41 | Client Portal | Customer tracking page — public barcode search with TrackingStepper |
| CARR-05 | Carrier App | Shipment detail with estado timeline and delivery info |
| CARR-12 | Carrier App | Detailed shipment view with tracking timeline |
Stage 6: Exception Handling
Parcels that exceed their retention period are marked as expired, reported to the ALINA system, and retrieved by carriers for return. This stage also covers issue tracking, escalation, and support workflows for damaged, lost, or disputed parcels. The transactional outbox pattern guarantees reliable export to external systems.
Actors: System, Carrier, Support
| ID | Module | Capability |
|---|---|---|
| EXPR-01 | Expiration | Mark expired shipments — scans for parcels past retention period |
| EXPR-02 | Expiration | Notify ALINA — processes outbox queue for expired parcel reporting |
| EXPR-03 | Expiration | Retrigger failed ALINA notification by outbox ID |
| EXPR-04 | Expiration | Transactional outbox pattern — same-tx outbox row with async ALINA delivery |
| EXPR-05 | Expiration | Dead letter queue (DLQ) for permanently failed ALINA exports |
| SHPM-09 | Shipments | CADUCADO transition — marks parcel as expired, sets expiry timestamp |
| SHPM-10 | Shipments | EN_DEVOLUCION transition — carrier retrieval of expired parcels, increments capacity |
| SHPM-11 | Shipments | DEVUELTO transition — final state for returned parcels |
| SHPM-17 | Shipments | Expired parcel retrieval with capacity increment |
| BFF-09 | BFF Gateway | Expired parcel retrieval by carrier |
| BFF-45 | BFF Gateway | List issues with filters |
| BFF-46 | BFF Gateway | Get issue by ID |
| BFF-47 | BFF Gateway | Create issue |
| BFF-48 | BFF Gateway | Update issue status |
| BFF-49 | BFF Gateway | Escalate issue |
| ISSU-01 | Issues | Create issue with type, severity, and shipment reference |
| ISSU-02 | Issues | Get issue by ID with audit trail |
| ISSU-03 | Issues | List issues with filters — status, type, severity, center |
| ISSU-04 | Issues | Update issue status with audit log entry |
| ISSU-05 | Issues | Escalate issue — raises severity and notifies support |
| ISSU-06 | Issues | Generate support chat token for live assistance |
| ISSU-07 | Issues | IssueAudit trail — automatic logging of all status changes with timestamp and actor |
| CARR-10 | Carrier App | Expired parcel list for pickup from PUDO centers |
| CARR-11 | Carrier App | Retrieval confirmation with state transition to EN_DEVOLUCION |
| CP-17 | Client Portal | Claims list with status filters |
| CP-18 | Client Portal | Claims detail view with timeline |
| CP-19 | Client Portal | New claim form with shipment reference and attachment upload |
Stage 7: Administration & Analytics
Platform-wide visibility, reporting, pricing management, schema introspection, and operational dashboards. This stage covers the admin panel, customer and operator dashboards, shipment analytics, and all cross-cutting concerns that support ongoing platform governance and optimization.
Actors: All roles
| ID | Module | Capability |
|---|---|---|
| BFF-02 | BFF Gateway | List shipments with pagination and filters — estado, date range, centerCode |
| BFF-15 | BFF Gateway | Operator dashboard — pending count + capacity from parallel internal calls |
| BFF-16 | BFF Gateway | Admin dashboard — totalShipments, byEstado breakdown, recentCount24h, centers summary |
| BFF-31 | BFF Gateway | Database schema introspection — tables, columns, constraints, FK edges for all tp_pprx_* tables |
| BFF-40 | BFF Gateway | Customer-scoped shipment listing |
| BFF-41 | BFF Gateway | Customer dashboard aggregation |
| BFF-52 | BFF Gateway | List all pricing tiers including inactive |
| BFF-53 | BFF Gateway | Create pricing tier |
| BFF-54 | BFF Gateway | Update pricing tier |
| BFF-55 | BFF Gateway | Delete pricing tier |
| BFF-59 | BFF Gateway | UserCenterEnrichmentFilter — sub-to-centerId/centerCode resolution with Caffeine cache (5-min TTL) |
| BFF-61 | BFF Gateway | Customer endpoint bypass — graceful fallback when users service unavailable |
| BFF-62 | BFF Gateway | CorrelationIdFilter — X-Correlation-Id propagation on all requests |
| BFF-63 | BFF Gateway | RateLimitFilter — per-IP burst (60/min) and per-subject (120/min) for external centers |
| BFF-64 | BFF Gateway | JWT validation via Spring Security OAuth2 Resource Server |
| BFF-65 | BFF Gateway | KeycloakRoleConverter for nested realm_access.roles parsing |
| BFF-66 | BFF Gateway | Swagger/OpenAPI UI at /swagger-ui/index.html with OAuth2 password flow |
| BFF-67 | BFF Gateway | WebClient configuration for all downstream services with Zipkin tracing |
| SHPM-02 | Shipments | List shipments with pagination, estado filter, date range, and center scoping |
| SHPM-04 | Shipments | Customer-scoped shipment listing by sender sub |
| SHPM-22 | Shipments | Pending shipment count by center ID for dashboard |
| SHPM-23 | Shipments | Shipment statistics — totalShipments, byEstado, recentCount24h |
| SHPM-24 | Shipments | Customer statistics by sender sub |
| CP-05 | Client Portal | Dashboard with pending shipment count and capacity usage bar |
| CP-06 | Client Portal | Real-time capacity percentage display with color-coded thresholds |
| CP-07 | Client Portal | Recent shipments list with estado badges |
| CP-08 | Client Portal | Shipment list with pagination, estado filter, and date range picker |
| CP-15 | Client Portal | Pickups list page with scheduled and completed pickup tracking |
| CP-16 | Client Portal | Certificate list page with download links and expiry status |
| CP-20 | Client Portal | Reports dashboard with shipment volume charts and export options |
| CP-23 | Client Portal | User management table with role editing and center assignment |
| CP-24 | Client Portal | Center management with create/edit/delete and provider filter |
| CP-25 | Client Portal | Seed data controls — load, unload, and status display |
| CP-26 | Client Portal | Schema Explorer — ERD canvas with React Flow, dagre layout, and service color coding |
| CP-27 | Client Portal | Schema detail panel — columns, PK, FK, CHECK, UNIQUE, indexes per table |
| CP-28 | Client Portal | Schema search filter with instant table highlighting |
| CP-29 | Client Portal | FK edge hover tooltip showing referenced table and column |
| CP-30 | Client Portal | Integrations page with Kanguro and Hublocker sync triggers |
| CP-31 | Client Portal | Provider list with center counts and last sync timestamp |
| CP-32 | Client Portal | Component-level admin guard as defense-in-depth |
| CP-33 | Client Portal | Swagger/OpenAPI embedded viewer at /docs |
| CP-34 | Client Portal | API documentation navigation with tag grouping |
| CP-36 | Client Portal | Admin pricing tier management — CRUD operations |
| CP-38 | Client Portal | Customer dashboard with active shipment summary and quick actions |
| CP-39 | Client Portal | Customer shipment list with status filtering |
| CP-45 | Client Portal | Collapsible sidebar with role-based menu items |
| CP-46 | Client Portal | Responsive layout — desktop and tablet breakpoints |
| CP-47 | Client Portal | Breadcrumb navigation with dynamic route labels |
| CP-48 | Client Portal | Transporter Design System v1.0 — CSS custom properties for all tokens |
| CP-49 | Client Portal | React Query for server state with automatic cache invalidation |
| PUDO-16 | PUDO Manager | Shipment history with search and estado filter |
| PUDO-19 | PUDO Manager | AppTheme design system — Transporter v1.0 tokens via app_theme.dart |
| CARR-15 | Carrier App | AppTheme design system — Transporter v1.0 tokens via app_theme.dart |
Summary Matrix
| Stage | BFF | Shipments | Centers | Users | Infra | Client Portal | PUDO Manager | Carrier App | Widget | Notifications | Expiration | Issues | Adapter | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Onboarding & Setup | 16 | 0 | 11 | 15 | 32 | 6 | 3 | 3 | 0 | 0 | 0 | 0 | 6 | 92 |
| 2. Shipment Creation | 13 | 2 | 0 | 0 | 0 | 6 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 30 |
| 3. Carrier Transport | 5 | 5 | 1 | 0 | 0 | 0 | 3 | 7 | 0 | 0 | 0 | 0 | 1 | 22 |
| 4. PUDO Reception | 3 | 2 | 3 | 0 | 0 | 2 | 8 | 0 | 0 | 5 | 0 | 0 | 0 | 23 |
| 5. Customer Delivery | 5 | 7 | 0 | 0 | 0 | 5 | 3 | 2 | 0 | 0 | 0 | 0 | 0 | 22 |
| 6. Exception Handling | 6 | 4 | 0 | 0 | 0 | 3 | 0 | 2 | 0 | 0 | 5 | 7 | 0 | 27 |
| 7. Administration & Analytics | 18 | 5 | 0 | 0 | 0 | 27 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 53 |
| Total | 66 | 25 | 15 | 15 | 32 | 49 | 19 | 15 | 9 | 5 | 5 | 7 | 7 | 269 |
Coverage: 269 of 271 capabilities mapped = 96.3% (2 capabilities are cross-cutting utilities not specific to a single stage)
Generated 2026-03-17 from CAPABILITIES.md v2.6.0