Skip to main content

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

AspectDetail
HostingOracle Cloud Free Tier VPS
FrontendStatic React build served by Nginx
BackendExpress 5 API via PM2 cluster
DatabaseMySQL 8.0 on same VPS
SSLLet's Encrypt (90-day auto-renewal)
CI/CDGitHub Actions → SCP → PM2 reload
StagingSame VPS, different port (8443), no domain binding
ProductionSame VPS, Nginx on port 443, domain loftygoldenoil.com

6. User Roles

RoleAccess LevelPrimary Responsibilities
AdminFull system accessUser management, system configuration, all modules
ProductionInventory + ProductionStock management, production runs, BOM, yield tracking
SalesCustomers + Sales + InvoicingCustomer management, order creation, invoicing, AR, receipts
AccountantExpenses + AccountingGL entries, journal entries, trial balance, P&L, bank reconciliation, expenses

7. Technology Stack Summary

LayerTechnologyVersion
FrontendReact + ViteReact 19 / Vite 6
BackendExpress + Node.jsExpress 5 / Node.js (LTS)
DatabaseMySQL8.0
Process ManagerPM2Latest
Reverse ProxyNginxLatest
Email ServiceResendHTTP API
SSL/TLSLet's EncryptCertbot
CI/CDGitHub ActionsYAML workflows
CloudOracle CloudFree 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

ResourceURL
Productionhttps://loftygoldenoil.com
Staginghttp://170.9.14.60:8443
Source CodeGitHub Repository
Documentationdocs/ directory in repository

Document version: 1.0 — July 2026