Executive Overview — Lofty Golden Oil ERP
1. Purpose
Lofty Golden Oil ERP is a purpose-built enterprise resource planning system designed for Lofty Golden Oil Ltd, a cooking oil distribution company operating in Nigeria. The system replaces manual spreadsheets, fragmented tools, and paper-based workflows with a unified digital platform that manages the entire business lifecycle — from procurement and production through sales, invoicing, and accounting.
The ERP provides real-time visibility into inventory levels, financial performance, and operational efficiency, enabling management to make data-driven decisions and maintain compliance with Nigerian regulatory requirements.
2. Business Context
Nigeria's edible oil distribution industry is characterised by high transaction volumes, complex supply chains, seasonal demand fluctuations, and regulatory oversight from agencies such as NAFDAC and SON. Lofty Golden Oil Ltd distributes refined and semi-refined cooking oils (RBD Palm Olein, Crude Palm Oil, and specialty blends) through a network of distributors, wholesalers, and direct customers.
Key business challenges addressed by the ERP:
- Inventory Visibility: Real-time tracking of stock across warehouses with automatic low-stock alerts.
- Production Costing: Accurate BOM (Bill of Materials) tracking, yield percentages, and cost-per-litre calculations.
- Revenue Assurance: End-to-end sales order management with accounts receivable tracking, invoice generation, and thermal receipt printing.
- Financial Control: Full general ledger, journal entries, trial balance, profit & loss statements, balance sheet, and bank reconciliation.
- Approval Workflows: Structured 4-level requisition approval chain (Requester → Supervisor → Manager → Accounts → MD).
- Audit Trail: Complete activity logging for regulatory compliance and internal auditing.
3. Key Features by Module
3.1 Dashboard
- KPI cards (total revenue, outstanding AR, stock value, production output)
- Interactive charts (revenue trends, expense breakdown, production yield)
- Low-stock alerts and pending requisition notifications
- Recent transaction feed
3.2 Inventory Management
- Full CRUD for inventory items (oil types, quantities, unit costs, locations)
- Stock adjustments with reason tracking (damaged, expired, transfer, correction)
- Low-stock threshold configuration with automated email alerts
- CSV export and searchable/sortable data tables
3.3 Purchases
- Purchase order creation linked to suppliers
- Automatic stock level updates on purchase receipt
- Supplier management with contact details and transaction history
- Date-range filtering and CSV export
3.4 Production Management
- Production run records with start/end dates and status tracking
- Bill of Materials (BOM) per product with ingredient quantities
- Yield percentage and cost-per-litre calculations
- Date-range filtering and production analytics
3.5 Sales & Invoicing
- Sales order creation linked to customers
- Invoice generation with itemised line totals
- Accounts receivable (AR) tracking with payment recording
- Thermal receipt printing for point-of-sale scenarios
- Date-range filtering and CSV export
3.6 Customer Management
- Customer CRUD with credit limits, balances, and contact information
- Customer balance tracking and ageing
- Customer statement generation and export
3.7 Accounting
- General ledger with debit/credit voucher entries
- Journal entry management
- Trial balance, P&L statement, and balance sheet generation
- Bank reconciliation workflow
- Expense tracking with category classification
- Chart of accounts management
3.8 User Management
- User CRUD with role assignment and status activation/deactivation
- Four defined roles: Admin, Production, Sales, Accountant
- Password management with secure hashing
3.9 Activity / Audit Log
- Timestamped log of all significant system actions
- Filterable by user, action type, and date range
- Immutable audit trail for compliance
3.10 Requisitions
- 4-level approval workflow: Request → Supervisor → Manager → Accounts → MD
- Email notifications at each approval stage
- Status tracking (pending, approved, rejected)
- Linked to relevant business entities (purchases, expenses, production)
3.11 Reports
- Consolidated reporting across all modules
- Financial summaries, inventory reports, sales analytics
- Exportable to CSV
4. System Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ CLIENT BROWSER │
│ React 19 SPA (Vite 6 Build) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Dashboard │ │Inventory │ │ Sales │ │ AR │ ... │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └─────────────┴────────────┴─────────────┘ │
│ │ Axios HTTP │
└──────────────────────────┼──────────────────────────────────────────┘
│ HTTPS (Port 443)
┌──────────────────────────┼──────────────────────────────────────────┐
│ NGINX REVERSE PROXY │
│ (SSL Termination + Static Files) │
│ Let's Encrypt TLS Certificate │
└──────────────────────────┼──────────────────────────────────────────┘
│ HTTP (Port 8443)
┌──────────────────────────┼──────────────────────────────────────────┐
│ EXPRESS 5 API SERVER │
│ (Node.js — Managed by PM2) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │JWT Auth │ │ Routes │ │Middleware│ │ Email │ │
│ │Middleware│ │(REST API)│ │ (RBAC) │ │(Resend) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └─────────────┴────────────┴─────────────┘ │
│ │ MySQL2 Driver │
└──────────────────────────┼──────────────────────────────────────────┘
│ TCP (Port 3306)
┌──────────────────────────┼──────────────────────────────────────────┐
│ MySQL 8.0 DATABASE │
│ 14 Tables: users, settings, inventory, purchases, │
│ production_runs, sales, expenses, inventory_adjustments, │
│ ar_invoices, ar_payments, requisitions, customers, │
│ suppliers, audit_log │
└─────────────────────────────────────────────────────────────────────┘
Infrastructure Host
- Cloud Provider: Oracle Cloud Infrastructure (Free Tier)
- Public IP:
170.9.14.60 - Production URL: https://loftygoldenoil.com
- Staging URL: http://170.9.14.60:8443
- Process Manager: PM2 (auto-restart, log management)
- SSL/TLS: Let's Encrypt (auto-renewal via Certbot)
- CI/CD: GitHub Actions (push-to-deploy via SCP + PM2 reload)
5. Deployment Model
| Aspect | Detail |
|---|---|
| Hosting | Oracle Cloud Free Tier VPS |
| Frontend | Static React build served by Nginx |
| Backend | Express 5 API via PM2 cluster |
| Database | MySQL 8.0 on same VPS |
| SSL | Let's Encrypt (90-day auto-renewal) |
| CI/CD | GitHub Actions → SCP → PM2 reload |
| Staging | Same VPS, different port (8443), no domain binding |
| Production | Same VPS, Nginx on port 443, domain loftygoldenoil.com |
6. User Roles
| Role | Access Level | Primary Responsibilities |
|---|---|---|
| Admin | Full system access | User management, system configuration, all modules |
| Production | Inventory + Production | Stock management, production runs, BOM, yield tracking |
| Sales | Customers + Sales + Invoicing | Customer management, order creation, invoicing, AR, receipts |
| Accountant | Expenses + Accounting | GL entries, journal entries, trial balance, P&L, bank reconciliation, expenses |
7. Technology Stack Summary
| Layer | Technology | Version |
|---|---|---|
| Frontend | React + Vite | React 19 / Vite 6 |
| Backend | Express + Node.js | Express 5 / Node.js (LTS) |
| Database | MySQL | 8.0 |
| Process Manager | PM2 | Latest |
| Reverse Proxy | Nginx | Latest |
| Email Service | Resend | HTTP API |
| SSL/TLS | Let's Encrypt | Certbot |
| CI/CD | GitHub Actions | YAML workflows |
| Cloud | Oracle Cloud | Free Tier |
8. Cost Benefits of Oracle Free Tier
Oracle Cloud's Always Free tier provides significant infrastructure cost savings:
- No compute charges for up to 4 ARM-based OCPUs and 24 GB RAM (or 2 AMD-based VMs with 1 GB each).
- No storage charges for up to 200 GB block volume and 10 GB object storage.
- No network egress charges within the free tier limits.
- Built-in security: DDoS protection, security lists, and network firewalls at no additional cost.
For a growing distribution company, this eliminates hosting costs entirely during the early growth phase, allowing investment in feature development rather than infrastructure. The system can later be migrated to a paid tier or scaled horizontally as transaction volumes demand.
9. Contact & Support
| Resource | URL |
|---|---|
| Production | https://loftygoldenoil.com |
| Staging | http://170.9.14.60:8443 |
| Source Code | GitHub Repository |
| Documentation | docs/ directory in repository |
Document version: 1.0 — July 2026