PRINTFLOW ERP
A cross-platform desktop inventory management system built with Electron and React, backed by Firebase Firestore for real-time cloud synchronization. Manages raw material procurement, finished goods production, purchase/delivery orders, and a multi-phase job card workflow across a role-based team.

Overview
This is a full-featured desktop ERP-style application built for a printing and manufacturing company to replace their manual Excel-based tracking. The system handles the complete operational lifecycle, from raw material purchasing to finished goods delivery, with real-time data sync across all users via Firebase Firestore.
The application is split into three core modules: Raw Material management (purchase orders, supplier tracking, warehouse stock), Finished Goods management (sales orders, production entries, delivery orders), and a Job Cards system that tracks each manufacturing job through phases including Pre-Press, Production, QC, and Dispatch. Role-based access control ensures each team member only sees what is relevant to their function.
The Challenge
The client was managing inventory, purchase orders, and production tracking entirely through shared Excel spreadsheets, leading to version conflicts, no real-time visibility across departments, and zero audit trail. The system needed to support 8 distinct user roles with different access levels, work reliably across multiple machines, and handle complex cascading data relationships, for example, editing a product name needed to automatically update every related transaction and purchase order across the database.
Our Solution
Architected a three-layer Electron application: the main process handles OS-level operations (printing, system notifications, file management), the preload script securely bridges the renderer, and the React renderer handles all UI and Firebase communication. Firebase Firestore was chosen for real-time multi-user sync via onSnapshot listeners, eliminating data conflicts. A role-based routing system was implemented at the app level so each user lands on their relevant module upon login. A cascade update utility was built to propagate product/supplier edits across all linked Firestore collections atomically using write batches. PDFs for purchase orders and delivery notes are generated client-side using jsPDF and printed via a hidden Electron window.
