All systems
In productioncommerce · retail2026

Avícola Morales

The problem was never selling: it was making the stock the system reported and the stock on the counter the same number. We made Odoo Community 19 the single source of truth and hung a narrow API off it, /am/v1, consumed by the self-service kiosk, the register and the portal. Nothing writes stock outside that path.

Stack

  • Odoo Community 19
  • PostgreSQL
  • Caddy
  • Docker
  • PWA
  • TypeScript

Receipts

No receipt, no effect.

  • The self-service kiosk is live and publicCheck it with: totem.waitdead.com
  • The register is live and publicCheck it with: caja.waitdead.com
  • Three gates block the deploy: stock, reservations, concurrent kiosksCheck it with: make gates → 01 stock · 02 reservas · 03 tótems
  • The production preflight fails loudly before anything comes upCheck it with: make prod-preflight → PREFLIGHT_OK
  • Backups are part of the cycle, not a good intentionCheck it with: make backup

What we do not claim

The Odoo backend is deliberately not exposed to the internet: only the surfaces that need to ship, ship. We audit the system against its own production plan and write down the gaps we find before closing them.