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 kiosks
Check it with: make gates → 01 stock · 02 reservas · 03 tótems - The production preflight fails loudly before anything comes up
Check it with: make prod-preflight → PREFLIGHT_OK - Backups are part of the cycle, not a good intention
Check 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.