Skip to content

La Hoja ERP (hoja.redbroomsoftware.com)

Full-featured restaurant ERP covering POS, table management, production planning, inventory, recipes, delivery integrations, and consumer-facing ordering — all in a single vertical primitive.

URL: https://hoja.redbroomsoftware.comStatus: LIVE Tier: T2 (vertical SaaS primitive)

T1 apps are indispensable horizontal primitives. T2 apps are vertical SaaS or single-domain primitives — primitive-like in their domain but not universal dependencies.

What you can integrate

  • Order lifecycle — receive sale.completed events when a POS or online order is finalized; subscribe to order status transitions
  • Delivery aggregator bridge — La Hoja connects to third-party delivery platforms; order events flow back as standard sale.completed regardless of originating platform
  • Consumer-facing storefront — public menu and QR table-session endpoints expose live menu data and enable cart/checkout for dine-in or to-go
  • Reservation ingestion — La Hoja consumes reservation.created from Mancha to pre-stage tables and alert kitchen
  • Fiscal sync — receives cfdi.stamped / cfdi.cancelled from Constanza; emits sale.completed for Constanza to trigger CFDI generation

Authentication

http
Authorization: Bearer <api_key>
Content-Type: application/json

User identity flows through Camino SSO. Server-to-server partners use per-tenant API keys issued from the La Hoja admin console. Public storefront endpoints (/api/public/*) are unauthenticated by design.

Endpoints

MethodPath
DELETE/api/account/delete
POST/api/address/validate
GET/api/analytics/orders
GET, POST/api/auth/forgot-password
GET, POST/api/auth/login
GET, POST/api/auth/logout
PATCH/api/auth/profile
GET, POST/api/auth/register
GET, POST, PUT, PATCH, DELETE/api/auth/verify
GET/api/business/labor-costs

114 total — 10 admin/cron/internal (hidden) — +94 more primary endpoints not shown. Source: src/app/api/**/route.ts in the la-hoja repo.

Events emitted

EventReceiversDescription
inventory.lowcamino, colectivaA product inventory fell below the low-stock threshold — Colectiva records the alert for analytics; Camino logs it as a TenantIntelligence signal in organization_activity_log.
sale.completedcolectiva, constanzaA POS sale has been completed

Events consumed

EventSendersDescription
cfdi.cancelledconstanzaA CFDI invoice has been cancelled
cfdi.stampedconstanzaA CFDI invoice has been stamped by the SAT via Constanza — receiver apps attach the UUID to their local invoice record and update status.
customer.mergedcaminoTwo duplicate customer records were merged in Camino — receiver apps update their local foreign keys to the canonical customer ID.
customer.updatedcamino, constanza, caracolA customer/contact record was updated in Camino — receiver apps sync the changed fields to their local customer records for display and invoicing accuracy.
employee.createdcolectiva[auto-derived] employee.created event
employee.missing_dataconstanzaConstanza detected an employee with missing fiscal data (RFC/CURP/etc.) — routed back to the source app that created the employee so the missing fields can be completed.
employee.terminatedcolectiva[auto-derived] employee.terminated event
employee.updatedcolectiva[auto-derived] employee.updated event
fiscal.resico_warningconstanzaConstanza detected an organization whose RESICO income utilization crossed the warning threshold (>=90%). Routed to accounting-sensitive apps so they can surface limit warnings in POS/invoice flows.
insights.availablecaminoCamino's AI engine generated new business insights for a tenant — receiver apps surface the insights in their dashboards for operator review.
invoice.compliance_issueconstanzaConstanza detected an invoice compliance issue (missing/invalid RFC, duplicate, format error) — routed back to the source app for review.
labor_costs.monthly_reportcolectiva[auto-derived] labor_costs.monthly_report event
labor_costs.updatedcolectiva, constanza[auto-derived] labor_costs.updated event
payment.receivedcolectiva, constanzaA payment has been processed via Colectiva
payment.reconciledconstanzaConstanza completed bank reconciliation for a payment — receiver apps update their local payment records to mark the payment as reconciled against the bank statement.
payroll.calculatedcolectiva[auto-derived] payroll.calculated event
reservation.arrivedmanchaA reservation party arrived at the restaurant — Caracol POS updates the table status from waiting to arrived, La Hoja POS mirrors the reservation timeline.
reservation.completedmanchaA restaurant reservation was completed (the party finished dining) — Colectiva records for revenue analytics, Caracol POS releases the table, La Hoja POS mirrors the timeline.
reservation.createdmadriguera, manchaA restaurant reservation has been created
reservation.seatedmanchaA reservation party was seated at the restaurant — Caracol POS starts the table timer, La Hoja POS mirrors the seating event.
reservation.updatedmanchaReservation details changed in Mancha (time/party size/contact) — Caracol POS and La Hoja POS update their mirrors.
shipment.status_changedagenteAgente updated shipment status (assigned, in_transit, delivered, exception) — notifies source apps (baul, la-hoja) to update tracking in their dashboards.
subscription.activatedcamino, colectivaA subscription plan has been activated for a tenant — all apps that gate features behind the subscription tier update their local tier state.
subscription.cancelledcamino, colectivaA subscription has been cancelled — all apps that gate features behind the subscription tier update their local tier state to free/cancelled.
subscription.changedcaminoA subscription plan has been upgraded or downgraded — receiver apps update their tier gates and feature access accordingly.
subscription.limit_approachingcaminoA tenant's subscription usage is approaching the plan limit — Camino notifies subscriber apps to surface a plan-upgrade prompt to the tenant operator.
subscription.trial_expiringcaminoA trial subscription is expiring soon — receiver apps surface an upgrade prompt to the tenant operator.
subscription.trial_startedcaminoA trial subscription was started — receiver apps activate trial-tier features for the new tenant.
workflow.actioncolectivaColectiva dispatches a workflow action to a target app — instructs the receiver to perform a specific operation (create employee, generate poliza, update record). Payload includes the action type and data needed by the receiver.

Webhook signature

Standard ecosystem HMAC-SHA256 over the raw body with a 5-minute timestamp window. See Webhooks.

OpenAPI

Coming in the OpenAPI generator phase — see /reference/openapi.

SDK

See /sdk/ for @r-bsoftware/ecosystem-sdk helpers.

Gotchas

  • La Hoja is the only ecosystem app built on Next.js (App Router, src/app/api/**/route.ts). All other apps are SvelteKit. Route shape is otherwise identical for integration purposes.
  • Delivery order events and POS order events both emit the standard sale.completed event. Differentiate by the channel field (pos | delivery_<platform_slug>), not by endpoint.
  • The public storefront endpoints (/api/public/*) require no auth and are designed for consumer-facing surfaces — do not add auth middleware in front of them.

Red Broom Software Ecosystem