Skip to content

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

IDModuleCapability
INFRA-01InfrastructureFull local stack orchestration — 8 microservices, PostgreSQL, Keycloak, MinIO, Zipkin
INFRA-02InfrastructureService health checks with depends_on conditions
INFRA-03InfrastructureNamed volumes for data persistence — postgres-data, keycloak-data, minio-data
INFRA-04InfrastructureEnvironment variable configuration per service with docker-default fallbacks
INFRA-05InfrastructureMulti-stage Dockerfile builds for all Java services
INFRA-06InfrastructureExtension initialization — uuid-ossp, pg_trgm (00_extensions.sql)
INFRA-07InfrastructureCore schema — tp_pprx_centro, tp_pprx_envio, tp_pprx_usuario, tp_pprx_historial_estado (01_schema.sql)
INFRA-08InfrastructureSeed data — test centers, users, shipments in all estados (02_seed.sql)
INFRA-09InfrastructureExpired schema — ALINA outbox and DLQ tables (03_expired_schema.sql)
INFRA-10InfrastructureIssues schema — tp_pprx_incidencia, tp_pprx_incidencia_audit (05_issues_schema.sql)
INFRA-11InfrastructureAdapter schema — tp_pprx_sync_centro, tp_pprx_sync_log (06_adapter_schema.sql)
INFRA-12InfrastructureNotifications user schema — tp_pprx_notificacion_usuario (07_notifications_user_schema.sql)
INFRA-13InfrastructureCustomer schema — tp_pprx_cliente, tp_pprx_direccion_cliente (08_customer_schema.sql)
INFRA-14Infrastructurev2.5 migrations — fecRecepcion, fecEntrega, fecCaducidad columns, estado history enrichment (09_v25_migrations.sql)
INFRA-15Infrastructurev2.5 seed data — enriched shipments with realistic timestamps (10_v25_seed.sql)
INFRA-16InfrastructureProfile photo schema — url_foto_perfil column on tp_pprx_usuario (11_profile_photo.sql)
INFRA-17InfrastructureBIGINT GENERATED ALWAYS AS IDENTITY for all primary keys
INFRA-18InfrastructureCHECK constraints on estado fields with valid state enumerations
INFRA-19InfrastructureRealm export with proximiti realm configuration (realm-export.json)
INFRA-20InfrastructureTest users — pudo-operator-1, carrier-1, admin-1, customer-1 (all password: password)
INFRA-21InfrastructureClient configuration — proximiti-bff with client secret
INFRA-22InfrastructureRole mapping — USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER realm roles
INFRA-23Infrastructurecenter_code user attribute mapped to JWT claim via oidc-usermodel-attribute-mapper
INFRA-24InfrastructureKC_HOSTNAME=keycloak for consistent issuer across containers and host
INFRA-25InfrastructureS3-compatible object storage for POD images and contract documents
INFRA-26InfrastructureBucket auto-creation on startup — proximiti-pod, proximiti-documents, proximiti-photos
INFRA-27InfrastructureDistributed tracing collector for all microservice spans
INFRA-28InfrastructureMicrometer Brave integration for automatic span propagation
INFRA-29Infrastructurereset-local.sh — teardown and rebuild script for fresh local environment
INFRA-30InfrastructureKeycloak sub sync script — update tp_pprx_usuario with real Keycloak sub values
INFRA-31Infrastructureenv/ directory with per-service environment files for Docker Compose
INFRA-32Infrastructure/etc/hosts requirement — 127.0.0.1 keycloak for browser-accessible token issuer
USR-01UsersResolve user center by Keycloak sub — returns centerId + centerCode
USR-02UsersProvision new user on first login — creates tp_pprx_usuario record
USR-03UsersList all users with pagination
USR-04UsersGet user by ID
USR-05UsersUpdate user role and center assignment
USR-06UsersGet profile photo URL for authenticated user
USR-07UsersUpdate profile photo URL
USR-08UsersDelete profile photo URL
USR-09UsersGet customer profile by Keycloak sub
USR-10UsersUpdate customer profile
USR-11UsersProvision customer on first login
USR-12UsersList saved addresses for customer
USR-13UsersCreate address
USR-14UsersUpdate address
USR-15UsersDelete address
CNTR-01CentersList all centers with pagination and optional provider filter
CNTR-02CentersGet center detail by code with ETag version header
CNTR-03CentersCreate new PUDO center — admin only, returns 201 with Location header
CNTR-04CentersUpdate center with If-Match ETag optimistic locking — admin only
CNTR-05CentersSoft delete center — admin only, 204 No Content
CNTR-06CentersGenerate presigned upload token for contract document — PDF only, 5MB max
CNTR-10CentersResolve center code by numeric ID
CNTR-11CentersResolve center ID by center code
CNTR-13CentersCenterAuthorizationService — center-scoped access control with admin bypass
CNTR-14CentersMinIO integration for contract document storage with presigned URLs
CNTR-15CentersJPA optimistic locking with version field for concurrent capacity updates
BFF-20BFF GatewayList all users with pagination
BFF-21BFF GatewayGet user by ID
BFF-22BFF GatewayUpdate user role and center assignment
BFF-23BFF GatewayList all centers with full detail
BFF-24BFF GatewayGet center by code with ETag forwarding
BFF-25BFF GatewayCreate center
BFF-26BFF GatewayUpdate center with If-Match ETag concurrency control
BFF-27BFF GatewaySoft delete center
BFF-28BFF GatewayGet seed data status with record counts by domain
BFF-29BFF GatewayLoad seed data with optional force overwrite
BFF-30BFF GatewayUnload all seed data
BFF-32BFF GatewayTrigger provider catalog sync — Kanguro or Hublocker
BFF-33BFF GatewayList providers with center counts and sync status
BFF-56BFF GatewayUpload profile photo to MinIO — max 2MB, JPEG/PNG/WebP
BFF-57BFF GatewayStream profile photo for authenticated user
BFF-58BFF GatewayDelete profile photo from MinIO and clear URL
BFF-60BFF GatewayAuto-provisioning on first login for all roles (USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER)
BFF-68BFF GatewayMinIO ProfilePhotoStorage service for direct object storage operations
ADPT-01AdapterCatalog sync — pull center catalog from Kanguro or Hublocker
ADPT-02AdapterCenter availability lookup by provider and center code
ADPT-03AdapterReception notification to provider — fire-and-forget
ADPT-04AdapterKanguro webhook receiver with signature validation
ADPT-05AdapterHublocker webhook receiver with signature validation
ADPT-06AdapterProviderAdapterRegistry — pluggable adapter pattern with KanguroAdapter and HublockerAdapter implementations
CP-01Client PortalKeycloak OIDC login with PKCE flow via keycloak-js adapter
CP-02Client PortalSilent token refresh with automatic retry
CP-03Client PortalRole-based shell selection — AppShell (operator/admin/carrier) vs CustomerShell (customer)
CP-04Client PortalRoleGuard component — redirects unauthorized users from protected routes
CP-37Client PortalOperator profile page with photo upload and personal info editing
CP-43Client PortalCustomer profile with personal info and preferences
PUDO-01PUDO ManagerKeycloak OIDC login with secure token storage (flutter_secure_storage)
PUDO-02PUDO ManagerAutomatic token refresh with retry logic
PUDO-03PUDO ManagermacOS keychain fix — FixedMacOsOptions for usesDataProtectionKeychain bug
CARR-01Carrier AppKeycloak OIDC login with prefixed storage keys (carrier_jwt_token)
CARR-02Carrier AppAutomatic token refresh with secure storage
CARR-16Carrier AppPrefixed 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

IDModuleCapability
BFF-01BFF GatewayCreate shipment with idempotency key support
BFF-10BFF GatewayPrint-ready HTML label generation
BFF-14BFF GatewayList all centers for operator dropdowns with field mapping
BFF-17BFF GatewayNearby center search with postal code geocoding, Haversine distance, availability
BFF-18BFF GatewayCenter detail with schedule, capacity, and photos
BFF-34BFF GatewayGet customer profile with JWT fallback defaults
BFF-35BFF GatewayUpdate customer profile
BFF-36BFF GatewayList saved addresses
BFF-37BFF GatewayCreate address
BFF-38BFF GatewayUpdate address
BFF-39BFF GatewayDelete address
BFF-50BFF GatewayList active pricing tiers
BFF-51BFF GatewayEstimate shipping cost by weight
SHPM-01ShipmentsCreate shipment with idempotency key deduplication
SHPM-21ShipmentsPrint-ready HTML label with barcode, sender, recipient, center info
CP-13Client PortalNew shipment form with address autocomplete and center selection
CP-14Client PortalPrint label button with browser print dialog
CP-35Client PortalPricing calculator with weight-based cost estimation
CP-40Client PortalCustomer new shipment form with saved address selection
CP-42Client PortalCustomer address book — CRUD for saved addresses
CP-44Client PortalCustomer pricing calculator
WDGT-01PUDO Selector WidgetPostal code search with geocoding and nearby center results
WDGT-02PUDO Selector WidgetSearch bar with debounced input and loading indicator
WDGT-03PUDO Selector WidgetInteractive map with center pins and distance indicators
WDGT-04PUDO Selector WidgetMap clustering for dense center areas
WDGT-05PUDO Selector WidgetScrollable center list sorted by distance with availability badges
WDGT-06PUDO Selector WidgetCenter detail panel with schedule, capacity, and photos
WDGT-07PUDO Selector WidgetCenter card component with name, address, distance, and status
WDGT-08PUDO Selector WidgetEmbeddable web component via <pudo-selector> custom element
WDGT-09PUDO Selector WidgetCSS 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

IDModuleCapability
BFF-04BFF GatewayCarrier handshake initiation for dual-QR protocol
BFF-05BFF GatewayQR session status polling
BFF-06BFF GatewayQR session validation by PUDO operator
BFF-07BFF GatewayList pending shipments for carriers
BFF-08BFF GatewayBatch drop of multiple parcels at PUDO center
SHPM-12ShipmentsCarrier handshake initiation — generates QR session token
SHPM-13ShipmentsQR session status polling
SHPM-14ShipmentsQR session validation by PUDO operator
SHPM-15ShipmentsList pending shipments for carrier pickup
SHPM-16ShipmentsBatch drop of multiple parcels at PUDO center
CNTR-08CentersAtomic capacity decrement with If-Match ETag and X-Correlation-Id
CARR-03Carrier AppCarrier dashboard with pending delivery count and route summary
CARR-04Carrier AppPending shipment list with pull-to-refresh
CARR-06Carrier AppBarcode scanner for parcel identification (mobile_scanner)
CARR-07Carrier AppDual-QR handshake — carrier initiates session, generates QR for operator
CARR-08Carrier AppBatch drop flow — select multiple parcels for PUDO center delivery
CARR-09Carrier AppBatch confirmation with success/failure per parcel
CARR-13Carrier AppHive local database for offline operation queue
CARR-14Carrier AppAutomatic sync when network available
PUDO-07PUDO ManagerDual-QR handshake — operator validates carrier session token
PUDO-12PUDO ManagerQR code display for carrier scanning
PUDO-13PUDO ManagerQR session polling with timeout and retry
ADPT-03AdapterReception 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

IDModuleCapability
SHPM-06ShipmentsState transition action dispatcher — receive, deliver, expire, retrieve
SHPM-07ShipmentsRECEPCIONADO transition — validates center match, decrements capacity via centers service
CNTR-07CentersGet current capacity by center ID
CNTR-09CentersAtomic capacity increment with If-Match ETag and X-Correlation-Id
CNTR-12CentersCenters summary with capacity data for admin dashboard
PUDO-04PUDO ManagerOperator dashboard with pending count and capacity usage
PUDO-05PUDO ManagerQuick action buttons — receive, deliver, scan
PUDO-06PUDO ManagerParcel reception with barcode scanning (mobile_scanner)
PUDO-08PUDO ManagerCapacity check before reception with user-friendly error
PUDO-14PUDO ManagerReal-time capacity display with visual indicator
PUDO-15PUDO ManagerCapacity history and trend view
PUDO-17PUDO ManagerHive local database for offline queue
PUDO-18PUDO ManagerAutomatic sync on connectivity restore
NOTF-01NotificationsList notifications for center with pagination
NOTF-02NotificationsGet unread notification count
NOTF-03NotificationsMark notification as read
NOTF-04NotificationsTrigger notification dispatch — creates user notification record
NOTF-05NotificationsNOVA stub integration — fire-and-forget pattern with 500ms timeout
BFF-42BFF GatewayList notifications with center scoping
BFF-43BFF GatewayGet unread notification count
BFF-44BFF GatewayMark notification as read
CP-21Client PortalNotifications page with read/unread status and mark-as-read action
CP-22Client PortalNotification 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

IDModuleCapability
BFF-03BFF GatewayGet shipment detail by barcode
BFF-11BFF GatewayGet POD metadata
BFF-12BFF GatewayGenerate POD presigned upload token
BFF-13BFF GatewayStream POD image bytes via proxy — signature or evidence
BFF-19BFF GatewayUnauthenticated shipment tracking by barcode
SHPM-03ShipmentsGet shipment detail by barcode with estado history and POD data
SHPM-05ShipmentsPublic tracking by barcode — returns estado, timestamps, center codes
SHPM-08ShipmentsENTREGADO transition — requires POD (signature + evidence URLs), sets delivery timestamp
SHPM-18ShipmentsGenerate presigned upload token for POD images
SHPM-19ShipmentsGet POD metadata — signature and evidence URLs
SHPM-20ShipmentsStream POD image bytes by type — signature or evidence
SHPM-25ShipmentsMinIO DocumentStoragePort for POD image storage with presigned URLs and streaming retrieval
PUDO-09PUDO ManagerDelivery flow with POD capture — signature pad + camera photo + ID verification
PUDO-10PUDO ManagerPOD upload via presigned URL to MinIO
PUDO-11PUDO ManagerDelivery confirmation with state transition to ENTREGADO
CP-09Client PortalShipment detail page with full lifecycle timeline and center info
CP-10Client PortalTrackingStepper component — vertical stepper with branching paths (happy 3-step / expiry 6-step)
CP-11Client PortalRetention countdown with urgency color coding (green > yellow > red)
CP-12Client PortalPOD display via BFF image proxy — signature and evidence photos
CP-41Client PortalCustomer tracking page — public barcode search with TrackingStepper
CARR-05Carrier AppShipment detail with estado timeline and delivery info
CARR-12Carrier AppDetailed 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

IDModuleCapability
EXPR-01ExpirationMark expired shipments — scans for parcels past retention period
EXPR-02ExpirationNotify ALINA — processes outbox queue for expired parcel reporting
EXPR-03ExpirationRetrigger failed ALINA notification by outbox ID
EXPR-04ExpirationTransactional outbox pattern — same-tx outbox row with async ALINA delivery
EXPR-05ExpirationDead letter queue (DLQ) for permanently failed ALINA exports
SHPM-09ShipmentsCADUCADO transition — marks parcel as expired, sets expiry timestamp
SHPM-10ShipmentsEN_DEVOLUCION transition — carrier retrieval of expired parcels, increments capacity
SHPM-11ShipmentsDEVUELTO transition — final state for returned parcels
SHPM-17ShipmentsExpired parcel retrieval with capacity increment
BFF-09BFF GatewayExpired parcel retrieval by carrier
BFF-45BFF GatewayList issues with filters
BFF-46BFF GatewayGet issue by ID
BFF-47BFF GatewayCreate issue
BFF-48BFF GatewayUpdate issue status
BFF-49BFF GatewayEscalate issue
ISSU-01IssuesCreate issue with type, severity, and shipment reference
ISSU-02IssuesGet issue by ID with audit trail
ISSU-03IssuesList issues with filters — status, type, severity, center
ISSU-04IssuesUpdate issue status with audit log entry
ISSU-05IssuesEscalate issue — raises severity and notifies support
ISSU-06IssuesGenerate support chat token for live assistance
ISSU-07IssuesIssueAudit trail — automatic logging of all status changes with timestamp and actor
CARR-10Carrier AppExpired parcel list for pickup from PUDO centers
CARR-11Carrier AppRetrieval confirmation with state transition to EN_DEVOLUCION
CP-17Client PortalClaims list with status filters
CP-18Client PortalClaims detail view with timeline
CP-19Client PortalNew 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

IDModuleCapability
BFF-02BFF GatewayList shipments with pagination and filters — estado, date range, centerCode
BFF-15BFF GatewayOperator dashboard — pending count + capacity from parallel internal calls
BFF-16BFF GatewayAdmin dashboard — totalShipments, byEstado breakdown, recentCount24h, centers summary
BFF-31BFF GatewayDatabase schema introspection — tables, columns, constraints, FK edges for all tp_pprx_* tables
BFF-40BFF GatewayCustomer-scoped shipment listing
BFF-41BFF GatewayCustomer dashboard aggregation
BFF-52BFF GatewayList all pricing tiers including inactive
BFF-53BFF GatewayCreate pricing tier
BFF-54BFF GatewayUpdate pricing tier
BFF-55BFF GatewayDelete pricing tier
BFF-59BFF GatewayUserCenterEnrichmentFilter — sub-to-centerId/centerCode resolution with Caffeine cache (5-min TTL)
BFF-61BFF GatewayCustomer endpoint bypass — graceful fallback when users service unavailable
BFF-62BFF GatewayCorrelationIdFilter — X-Correlation-Id propagation on all requests
BFF-63BFF GatewayRateLimitFilter — per-IP burst (60/min) and per-subject (120/min) for external centers
BFF-64BFF GatewayJWT validation via Spring Security OAuth2 Resource Server
BFF-65BFF GatewayKeycloakRoleConverter for nested realm_access.roles parsing
BFF-66BFF GatewaySwagger/OpenAPI UI at /swagger-ui/index.html with OAuth2 password flow
BFF-67BFF GatewayWebClient configuration for all downstream services with Zipkin tracing
SHPM-02ShipmentsList shipments with pagination, estado filter, date range, and center scoping
SHPM-04ShipmentsCustomer-scoped shipment listing by sender sub
SHPM-22ShipmentsPending shipment count by center ID for dashboard
SHPM-23ShipmentsShipment statistics — totalShipments, byEstado, recentCount24h
SHPM-24ShipmentsCustomer statistics by sender sub
CP-05Client PortalDashboard with pending shipment count and capacity usage bar
CP-06Client PortalReal-time capacity percentage display with color-coded thresholds
CP-07Client PortalRecent shipments list with estado badges
CP-08Client PortalShipment list with pagination, estado filter, and date range picker
CP-15Client PortalPickups list page with scheduled and completed pickup tracking
CP-16Client PortalCertificate list page with download links and expiry status
CP-20Client PortalReports dashboard with shipment volume charts and export options
CP-23Client PortalUser management table with role editing and center assignment
CP-24Client PortalCenter management with create/edit/delete and provider filter
CP-25Client PortalSeed data controls — load, unload, and status display
CP-26Client PortalSchema Explorer — ERD canvas with React Flow, dagre layout, and service color coding
CP-27Client PortalSchema detail panel — columns, PK, FK, CHECK, UNIQUE, indexes per table
CP-28Client PortalSchema search filter with instant table highlighting
CP-29Client PortalFK edge hover tooltip showing referenced table and column
CP-30Client PortalIntegrations page with Kanguro and Hublocker sync triggers
CP-31Client PortalProvider list with center counts and last sync timestamp
CP-32Client PortalComponent-level admin guard as defense-in-depth
CP-33Client PortalSwagger/OpenAPI embedded viewer at /docs
CP-34Client PortalAPI documentation navigation with tag grouping
CP-36Client PortalAdmin pricing tier management — CRUD operations
CP-38Client PortalCustomer dashboard with active shipment summary and quick actions
CP-39Client PortalCustomer shipment list with status filtering
CP-45Client PortalCollapsible sidebar with role-based menu items
CP-46Client PortalResponsive layout — desktop and tablet breakpoints
CP-47Client PortalBreadcrumb navigation with dynamic route labels
CP-48Client PortalTransporter Design System v1.0 — CSS custom properties for all tokens
CP-49Client PortalReact Query for server state with automatic cache invalidation
PUDO-16PUDO ManagerShipment history with search and estado filter
PUDO-19PUDO ManagerAppTheme design system — Transporter v1.0 tokens via app_theme.dart
CARR-15Carrier AppAppTheme design system — Transporter v1.0 tokens via app_theme.dart

Summary Matrix

StageBFFShipmentsCentersUsersInfraClient PortalPUDO ManagerCarrier AppWidgetNotificationsExpirationIssuesAdapterTotal
1. Onboarding & Setup1601115326330000692
2. Shipment Creation1320006009000030
3. Carrier Transport551000370000122
4. PUDO Reception323002800500023
5. Customer Delivery570005320000022
6. Exception Handling640003020057027
7. Administration & Analytics18500027210000053
Total662515153249191595577269

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

Ecosistema PUDO de PROXIMITI — documentacion interna