Back to projects
POS · Grocery Private repository
POS for Grocery Stores
POS and management for grocery stores and markets in Peru: multi-business, with roles and permissions.
- Type
- Multi-business SaaS
- Database
- PostgreSQL
- Data models
- 42 models in PostgreSQL
What it solves
A grocery store needs to sell fast while knowing its stock, who it lends to and how much it earns. This system brings the point of sale, inventory with kardex, purchasing, cash and credit into a single platform that serves multiple businesses.
Key features
- Point of sale with multiple payment methods and per-session cash control.
- Inventory with kardex, batches, transfers between branches and inventory audits.
- Purchasing and suppliers, with payments and expenses.
- Customer credit (store credit) with its payments.
- Finance: financial accounts and movements.
- Electronic invoices with document series.
- Sample catalog of Peruvian products to get started faster.
Architecture and technical decisions
- Multi-business: every record belongs to a businessId taken from the JWT, so nobody sees another business's data.
- Per-business roles and permissions shaped as module.action, checked by a PermissionsGuard.
- Plans that limit products, branches and active users per store.
- NestJS 11 on Fastify, Prisma 7 and PostgreSQL 16; Redis 7 for queues with BullMQ.
- Dates and cash closings use the America/Lima timezone; migrations with prisma migrate deploy.
- CI with GitHub Actions and Docker Compose deployment; Angular frontend with Tailwind 4.