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
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.
- Users01Branch teamsEach sees only what their role allows, in their own language and currency
- Client02React SPADense, permission-aware dashboards and forms
- API03Node.jsInventory, sales, payments, receivables and reports
- Hosting04Linux VPSNginx, PM2 and SSL
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
- RBAC: roles map to permissions that gate both UI screens and API actions.
- Multi-branch: records and operations are scoped to branches, so each branch works independently while management sees the whole picture.
- Multi-currency: transactions carry their currency, and reporting can present figures consistently across currencies.
- Multilingual UI: interface text is localised rather than hard-coded.
- Document generation: PDFs are produced from live data, so paperwork matches the ledger.
- Part of a connected ecosystem with the Ocean Trading website and auction platform.
- Deployed on a Linux VPS behind Nginx with SSL/HTTPS. Node.js processes are managed with PM2.
Process
Discovery
Mapped the vehicle lifecycle (stock, sale, payment, expenses) and the reports management needs.
Roles and branches
Defined who can see and do what before building screens.
UI/UX
Designed data-dense screens that stay readable.
Build
React front-end and Node.js API developed module by module.
Deploy
Production release on a Linux VPS with Nginx and SSL.
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
Related projects
See all projects- WebOcean TradingAdvanced stock search, detailed vehicle pages and multi-language, multi-currency support, built to rank internationally.Next.js · Node.js
- WebOcean Trading AuctionMaker/model browsing with live counts, lot booking, favourites and one-click PDF photo export.React.js · PHP Laravel
- EnterpriseEasy AccountingFrom quotation to invoice, with VAT handling, customer/supplier records and reports.PHP Laravel
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.