FAB Construction Inventory Management System
A scalable inventory and operations management platform built for a real construction business. The system centralizes product inventory, multi-location stock, and work-process tracking behind role-based access for staff and administrators, replacing manual, spreadsheet-driven processes with a structured, auditable workflow.
Overview
FAB Construction needed a reliable way to track inventory, tools and materials across multiple sites, and to give managers visibility into which work processes were underway, blocked, or complete. This project delivered a scalable inventory and operations platform tailored to that workflow.
Problem
Inventory and work-process status were tracked manually across spreadsheets and informal communication, making it difficult to know current stock levels, locate materials across sites, or track the state of ongoing work processes.
Context
Built as a real, business-oriented system for a construction company during my role as Junior IT Consultant at FAB Construction (2021–2023), alongside deploying the company's broader ERP system, where I was responsible for digitizing internal processes.
My Role
I designed and built the system end-to-end: data model, backend logic, user interface and role-based access control, working directly with staff to understand day-to-day inventory and operational needs.
Requirements
- Full CRUD functionality for inventory products
- Separate user and administrator roles with distinct permissions
- Product image uploads
- Support for multiple storage locations
- Work-process tracking with statuses: Not Started, In Progress, Completed
- Responsive interface usable on-site from mobile devices
- A database design that scales as inventory and locations grow
Architecture
A client-server architecture: a React 18 + TypeScript single-page frontend, a FastAPI REST layer handling JWT authentication and business logic, and a normalized PostgreSQL schema modeling products, locations, suppliers, stock movements and work processes as distinct, related entities. See the diagram below.
Implementation
The frontend was built as a responsive single-page application with dedicated views for inventory browsing, product detail and editing, and work-process boards, using TanStack Query for data fetching and an Axios client with a JWT interceptor. The backend exposes authenticated REST endpoints (FastAPI + SQLAlchemy 2 + Alembic migrations) for CRUD operations, image uploads and role-gated administrative actions, secured with JWT access tokens and bcrypt password hashing. The database schema was normalized around products, locations, suppliers and work-process records to support multi-location reporting.
Technical Challenges
Modeling inventory that exists simultaneously across multiple locations, while keeping the interface simple enough for non-technical staff to use daily, was the central design challenge. Balancing administrator flexibility with a low-friction experience for regular users required careful role and permission design.
Solutions
Introduced a location-aware inventory schema so stock and work-process records are always tied to a specific site, and layered role-based access control so administrators can manage products and users while regular staff have a focused, simplified workflow.
Screenshots
Results
Delivered as IMS v1.0: a full-stack system (React 18 + FastAPI + PostgreSQL 16) covering product, location and supplier CRUD with image uploads, JWT-based role access (Admin/User), stock-movement history (Stock In / Stock Out / Adjustment), a work-process board, and a reporting dashboard with live low-stock alerts — replacing the spreadsheet- and message-based tracking previously used across FAB Construction's sites. The linked repository is a cleaned-up, from-scratch rebuild of the same system for public review, deployed live at the demo link above — log in as Admin (admin@fabconstruction.com / admin) or User (john.smith@fabconstruction.com / User@123) to try it.
Lessons Learned
Working directly with non-technical end users clarified how much interface simplicity matters for daily adoption, and reinforced the value of designing the data model around real operational entities (locations, work processes) rather than generic CRUD tables.
Future Improvements
- Barcode or QR-based stock lookups
- Automated low-stock alerts delivered via email
- Reporting dashboards for inventory trends across locations
