PARTFORGE — BOM, PO & Contract Management
04 / 06 In Development Business System

PartForge.

A unified management system for Bills of Material, Purchase Orders, Contracts, Quotations and Parts — running locally as a desktop app with a system tray daemon, SQLite database, and browser-based UI modules.

PartForge Contracts BOMs Parts POs
24
Contracts
1,847
Parts
63
Open POs
12
Quotations
Contract Customer Description Status Value
25.504 BAE Systems Conveyor Line 3 Upgrade Active £284,000
25.501 Siemens UK Sortation Module Pack Delivered £142,500
25.508 Amazon BHX4 Diverter Spares Kit Quoting £38,200
25.492 Royal Mail Belt Drive Overhaul Complete £96,750
25.511 DHL Supply Chain WDS Sorter Install On Hold £412,000
25.497 JLR Solihull Tote Handling System Active £178,000
Monthly Revenue
Python· SQLite· HTML / CSS / JS· Local HTTP Server· Windows System Tray· REST API· SheetJS
Replace a mess of spreadsheets, shared drives and email chains with a single local system that manages the full lifecycle of engineering contracts — from initial quotation through to purchase orders, bills of material, parts tracking, and delivery.

It had to run entirely offline with zero cloud dependency, launch from the system tray, serve a browser-based UI on localhost, and handle everything from BOM imports via drag-and-drop Excel files to automated invoice and forecast generation.
📄

Contract Manager

Full CRUD for engineering contracts. Create, edit, delete, and export. Tracks contract value, status, customer, and all associated parts and POs.

📦

BOM Viewer

Interactive Bill of Materials browser. Drag and drop Excel BOMs, explore hierarchical part trees, search across assemblies, flag missing or duplicate parts.

🛒

Purchase Tracker

Track purchase orders from raised to delivered. Monitor ETAs, delivery status, supplier performance, and link POs back to their parent contract and BOM lines.

📈

Quotation Manager

Build and manage quotations with line items, margin calculations, and revision history. Convert accepted quotes directly into contracts.

⚙

Parts Manager

Central parts register with KPI dashboards. Track part usage across contracts, monitor stock levels, identify common components across projects.

📂

File Daemon

Background file scanner that watches project folders, cross-references drawings and documents against BOMs, and flags missing deliverables.

UI Layer
Contract Manager BOM Viewer Purchase Tracker Parts Manager Quotation Mgr
↓
API Layer
REST API (localhost:8765) File Scanner API db-api.js
↓
Data Layer
SQLite (bom_system.db) JSON Config Scan Cache
↓
System
Python Daemon (pystray) Windows Startup HTTP Server
7
modules
App Suite
0
cloud
Dependencies
8765
port
Local Server
<1s
launch
System Tray
bom_daemon.pyw — system tray & HTTP server
# Windows system tray daemon with local HTTP server

class BOMHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/":
            self.path = "/apps/index.html"

        elif self.path.startswith("/api/scan"):
            folders = self.load_watched_folders()
            results = self.scan_directory_tree(folders)
            self.send_json(results)

        elif self.path.startswith("/api/parts"):
            db = sqlite3.connect("data/bom_system.db")
            parts = db.execute("SELECT * FROM parts").fetchall()
            self.send_json(parts)
01

Offline-First Requirement

The system had to work on air-gapped machines with no internet access and no cloud accounts.

Local Python HTTP server + SQLite database. All apps served from localhost:8765, zero external dependencies at runtime.

02

BOM Import Complexity

Engineering BOMs arrive as messy Excel files with inconsistent formatting, merged cells, and nested assemblies.

SheetJS parser with custom normalisation rules. Drag-and-drop import with preview, duplicate detection, and hierarchy reconstruction.

03

Cross-Module Data Linking

Parts appear in BOMs, POs, contracts, and quotations — keeping references consistent across modules was critical.

Centralised SQLite schema with foreign keys. db-api.js provides a unified data layer all modules share.

04

Drawing & Document Tracking

Thousands of CAD drawings and documents across network drives needed linking back to BOM line items.

File daemon watches configured folders, scans for part numbers in filenames, and cross-references against the parts database.

05

Zero-Install Deployment

IT restrictions meant no admin installs, no new services, no changes to group policy.

Single INSTALL.bat that pip-installs dependencies, registers a startup entry, and creates a desktop shortcut. Runs in user-space only.

Python 3 SQLite HTML / CSS / JS pystray Pillow SheetJS REST API Windows Registry

Selected Works

PartForgeManufacturing System
Machina AutomataMachine Automation Simulation
BrickSmithBrick Builder