Stock Manager
BackStock Manager was built by Joël Houinsavi (full-stack developer) and I. I worked across both frontend and backend, with a particular focus on point of sale, product catalogue, inter-store transfers, and the multi-organization migration.
The product covers the full stock lifecycle for a multi-store network: supplier purchase orders, receptions, invoices, stock movements, packaging format conversions, physical inventories with a validation workflow, and a full point-of-sale system with checkout and refunds. Transfers between stores aren't a simple quantity move: each confirmed transfer triggers, in a single transaction, the source stock decrement, the destination stock increment, and the update of both movements and both packaging-format breakdowns, so a product can never end up duplicated or lost between two stores. A five-level role system governs who can do what, from a cashier who only sees the checkout screen to a super-admin with access to everything.
The real challenge of this project wasn't adding one more feature, it was migrating the entire architecture to a multi-organization model while the application was already running on real data. Concretely, that meant adding an organization concept to every business table, products, stock, suppliers, orders, transactions, audit logs, without breaking what was already working. The tricky part in that kind of migration is never the obvious relationships, it's the indirect ones you discover along the way, a purchase order numbering sequence, a composite stock identifier, a denormalized field in an audit log, all of which also needed to become organization-aware.
Operations touching stock, sales, transfers, receptions, all run through strictly isolated transactions, to prevent two concurrent movements from corrupting the actual stock level, a very real risk once a product can be sold at the register and adjusted manually at the same time.
Technically, Stock Manager runs on a Node.js and Express backend in TypeScript, with Prisma and PostgreSQL, and a Next.js frontend, all organized into a strict four-layer architecture, routes, controllers, services, repositories, with an automated test suite and continuous integration on every pull request.