Project
BloomOps
Inventory management system for florists — track stock, manage products, record shipments, fulfill orders, and monitor financials from one dashboard.

Problem
Small flower shops typically manage inventory through spreadsheets, handwritten notes, or memory — tracking what stock is on hand, which supplier it came from, and what orders need fulfilling is scattered across tools and easily lost. There was no lightweight, purpose-built solution for the day-to-day operations of a florist.
Solution
BloomOps is an all-in-one operations tool built specifically for flower shop owners. It brings products, suppliers, shipments, orders, and financial reporting into a single authenticated interface, keeping the full picture of the business visible at a glance.
Core features
- Auth and protected routes
- Product inventory with SKU, cost & sell pricing, and stock quantity
- Supplier management with contact details
- Shipment recording to increase stock levels
- Customer order management (draft → confirmed → fulfilled)
- Low-stock alerts and minimum stock thresholds
- Dashboard with live KPIs — stock value, gross profit, monthly sales
- Reports: stock by category, top-selling products, monthly sales & profit tables
Workflow
- Add suppliers and products
- Record incoming shipments to update stock
- Create customer orders and track fulfilment status
- Monitor dashboard for stock value and gross profit
- Review reports for top sellers and monthly trends
Screenshots









What I learned
- Building “inventory management” in the abstract would have been a features list. Building it for a florist forced specific decisions: perishable stock assumptions, seasonal ordering patterns, cost-vs-sell margins on arrangements. The constraint sharpened every screen.
- The entity graph — products linked to suppliers, suppliers linked to shipments, shipments updating stock, stock consumed by orders — had to be modelled before I wrote a single component. Getting that wrong would have meant rewriting half the app. I got it mostly right by drawing it on paper first and noticing where a change to one entity would cascade.
- The dashboard KPIs (stock value, gross profit, monthly sales) are recalculated live. The moment I added them, the app went from feeling like a data entry tool to feeling like a business tool. A read-only summary screen can transform the perceived value of everything behind it.
- Eight different CRUD forms that each looked slightly different would have felt like eight different apps. Standardising the form layout, field spacing, and button placement early meant I could move fast on new features without design decisions slowing me down.
Next steps
- Real florist feedback and workflow validation
- Multi-user / team access
- Invoice and receipt generation
- Low-stock email notifications