Sellable quantity reflects both available and reserved stock.
Inventory transactions track purchases, sales, returns, adjustments, and damaged stock—preserving an operational history rather than only the current number.
Case study · 02 AP Enterprises
Building a multi-surface platform that connected customer shopping to the inventory, orders, payments, delivery, and administration required behind every transaction.
Customer, staff, and administration workflows
Full-stack application, backend, data, and deployment
Flutter · Go · PostgreSQL · Railway
The challenge 01
The goal was to build more than a product catalogue. The platform needed to carry a customer from discovery and checkout into the internal systems needed to fulfil their transaction.
That meant a backend capable of maintaining consistency across interconnected domains: inventory, carts, orders, payments, deliveries, returns, reviews, coupons, and administration.
Domain model 02
The same system also supports inventory, returns, reviews, coupons, staff assignment, and administration. Business rules live on the server so that clients do not become the source of truth.
Architecture 03
Flutter handles the application experience across mobile and web. The Go backend owns validation, authorization, domain logic, and data access. PostgreSQL provides the relational and transactional foundation for the connected commerce model.
Engineering detail 04
Inventory transactions track purchases, sales, returns, adjustments, and damaged stock—preserving an operational history rather than only the current number.
Idempotency keys associate retryable requests with a request hash and stored response, protecting business-critical workflows from duplicate outcomes.
A customer must have a delivered order containing the product before leaving a review, with one review per user per product enforced by the database.
The system supports soft deletion followed by anonymization of personal information while retaining necessary order and financial history.
Security & delivery 05
Authentication, authorization, input validation, role-aware access, secure password handling, verification, recovery, and business-rule enforcement are handled in the backend, supported by database constraints and OWASP Top 10-aligned practices.
The Go backend and Flutter Web application are deployed on Railway, keeping the infrastructure simple while providing a practical production environment for the application.
Result 06
What this demonstrates 07
Business workflows need explicit domain models.
Client state cannot own critical transactional rules.
Inventory needs a history, not just a number.
Retries need idempotency in production systems.
Account lifecycle is more than login and registration.
Building connected workflows? 08
If your product needs more than isolated features, let’s talk about the system that will hold the workflow together.
Start a conversation ↗