Skip to content

Case study 01 / 08Enterprise

Ocean ERP

One system for a multi-branch vehicle export business

Vehicle inventory, sales, payments, expenses and financial reporting in one multi-branch, multi-currency system.

Role
Senior Full Stack Developer (in-house)
Industry
Automotive trading and vehicle export
Region
Japan
Stack
React.js · Node.js
Illustration of Ocean ERP: Vehicle inventory, sales, payments, expenses and financial reporting in one multi-branch, multi-currency system.

Overview

Ocean ERP is the internal management platform behind Ocean Trading's vehicle export business. It brings vehicle inventory, sales, payments, expenses, receivables and payables into one React and Node.js application, with dashboards, generated documents and financial reports on top. Teams in different branches work from the same data, each seeing only what their role allows, in their own language and currency.

The challenge

Every unit in a vehicle export business carries its own trail of purchase cost, expenses, sale price, part payments and paperwork, and that trail runs across branches, currencies and languages. When this lives in separate tools, it is hard to answer basic questions quickly: what's in stock, who still owes money, what we owe suppliers, and how a branch is performing. The business needed a single system that respected branch boundaries and staff roles without slowing anyone down.

The solution

I built Ocean ERP as a React single-page application on a Node.js back-end. Inventory, sales, payments and expenses are linked records, so receivables, payables and reports come from the same source of truth. Role-based permissions and branch-level scoping control who sees and does what. Multilingual screens and multi-currency workflows let each branch work naturally, and document generation and dashboards turn the data into paperwork and decisions.

Key features

  • Vehicle inventory

    Each vehicle is a tracked record that sales, payments and expenses all attach to.

  • Sales and payments

    Sales are recorded against vehicles, with payments tracked over time.

  • Expense tracking

    Costs are captured against the business and its vehicles so margins and reports stay accurate.

  • Receivables and payables

    Shows what customers owe and what the business owes, kept current from day-to-day transactions.

  • Financial and operational reporting

    Dashboards and reports for management and accounts.

  • Document generation

    Business documents generated straight from system data.

  • Role-based permissions

    Access to screens and actions is controlled by role.

  • Branch-level operations

    Data and operations are organised by branch.

  • Multilingual and multi-currency

    Staff work in their preferred language, and transactions handle more than one currency.

How it fits together

From the people using it to where it runs: the main parts of Ocean ERP and how they connect.

  1. Users01Branch teamsEach sees only what their role allows, in their own language and currency
  2. Client02React SPADense, permission-aware dashboards and forms
  3. API03Node.jsInventory, sales, payments, receivables and reports
  4. Hosting04Linux VPSNginx, PM2 and SSL
System overview · illustration

Tech stack and why

React.js
Ocean ERP is dense, form- and table-heavy software. React's component model keeps dozens of similar screens consistent and quick to extend.
Node.js
One JavaScript/TypeScript language across front-end and API keeps development fast. Node also handles the many small, concurrent requests a busy ERP makes.
Linux VPS, Nginx, PM2, SSL
Full control over hosting, security and performance for a private business system, at a sensible cost.

Architecture

  1. RBAC: roles map to permissions that gate both UI screens and API actions.
  2. Multi-branch: records and operations are scoped to branches, so each branch works independently while management sees the whole picture.
  3. Multi-currency: transactions carry their currency, and reporting can present figures consistently across currencies.
  4. Multilingual UI: interface text is localised rather than hard-coded.
  5. Document generation: PDFs are produced from live data, so paperwork matches the ledger.
  6. Part of a connected ecosystem with the Ocean Trading website and auction platform.
  7. Deployed on a Linux VPS behind Nginx with SSL/HTTPS. Node.js processes are managed with PM2.

Process

  1. Discovery

    Mapped the vehicle lifecycle (stock, sale, payment, expenses) and the reports management needs.

  2. Roles and branches

    Defined who can see and do what before building screens.

  3. UI/UX

    Designed data-dense screens that stay readable.

  4. Build

    React front-end and Node.js API developed module by module.

  5. Deploy

    Production release on a Linux VPS with Nginx and SSL.

  6. Iterate

    Ongoing optimisation and new modules as the business asks for them.

Outcomes

  • Inventory, sales, payments and expenses now live in one system instead of separate records.
  • Receivables and payables can be checked at any time from the same data that drives day-to-day work.
  • Branch teams work in parallel with permission-controlled access.
  • Documents and reports come straight from system data, which reduces manual re-typing.

Gallery

Inventory listIllustration
Report viewIllustration
Role/permission settingsIllustration
See all projects

Need something similar? Laravel & full stack development for Lahore businesses.

Need an ERP built around how your business actually works?

I build web, mobile and enterprise software for teams in Pakistan, the UAE/GCC, the UK and beyond. Tell me what you're working on and I'll reply with a clear plan.