Lab — Self-Hosted Personal ERP for a Home Workshop

A private control system for parts, orders, tasks and a lightweight ledger.

LAN/VPN single-user PHP 8.2 MariaDB Nginx GitHub Actions Cron
Jump to screenshots ↓
Lab cover showing the system dashboard

Problem → Solution

Workshop operations were spread across notes, spreadsheets and inboxes, making inventory and order status easy to miss. Context switching slowed down day-to-day work.

Lab consolidates parts, orders, tasks and ledger events into a single, fast UI with stable URLs and saved list preferences. The result is predictable workflows and clearer next actions.

Capabilities

  • Parts inventory with units and minimums.
  • Order intake with receiving workflow.
  • Ledger entries tied to real actions.
  • Task list with priority and due dates.
  • Daily digest summary via email.
  • URL-driven list state for sharing.
  • Persisted table preferences.
  • Responsive layout for quick checks.

Architecture

Nginx fronts the single host and routes to PHP-FPM.

Application layer runs on PHP 8.2 with a MariaDB datastore.

Cron schedules the daily digest build and email.

GitHub Actions deploys to a self-hosted runner.

Nginx -> PHP-FPM -> PHP app -> MariaDB
cron -> digest
GitHub Actions runner -> deploy

Tradeoffs

  • Single-user focus limits shared workflows.
  • Server-side rendering prioritizes reliability over rich client UI.
  • Self-hosting adds maintenance and backup responsibility.

Planned next

  • Part usage history and movement reports.
  • CSV import/export for inventory and orders.
  • Digest formatting with action highlights.
  • More granular table presets per workflow.

Screenshots