Lab — Self-Hosted Personal ERP for a Home Workshop
LAN/VPN
single-user
PHP 8.2
MariaDB
Nginx
GitHub Actions
Cron
Jump to screenshots ↓
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.