Skip to content
All work

Case study 08 / 09

Client project · 2026

Shams al Murjan

A Laravel ERP and client portal for Shams al Murjan, a used auto-parts trading company: containers, stock, invoicing, money exchange, payroll and investor accounting.

Role
Full-stack developer
Stack
  • Laravel
  • PHP
  • MySQL
  • Blade
  • Bootstrap
  • jQuery DataTables
  • Spatie Permission
  • DomPDF / mPDF
Shams al Murjan access portal: the company name in gold on a navy background, with two cards to sign in to the Admin Panel or the Client Portal.
ScreenshotAccess page of the live system. Screenshot captured October 2026; everything behind sign-in is private.

01

Overview

Shams al Murjan Used Auto Spare Parts TR L.L.C trades used auto parts that arrive in shipping containers. Its internal system runs the business: containers and their contents, stock, invoices and payments, money exchange, payroll and investor accounts.

The system is a Laravel application with an admin panel for staff and a separate portal for client companies. I extended it with the client portal and several business modules.

02

The brief

Client companies need to follow their own containers, invoices and balances without waiting for staff to send updates. Staff need fine-grained permissions across many modules, and financial records need a history that is never lost.

03

Role and scope

Role
Full-stack developer
Scope
I extended the system with the client portal and access page, user management, investor accounting periods, container items and stock, invoicing fixes and a responsive navigation.

04

Main features

  • Client portal

    An invite-only portal where client companies see their invoices, containers, tracking, stock, expenses and payments, download PDFs and switch between their companies.

  • Containers and stock

    Container records with items, expenses and port tracking, linked through to stock and invoicing.

  • Invoicing and payments

    Invoices built from container items, with payments, loading and return handling, and bulk actions.

  • Money exchange

    Hawala transfers, loan payments, a daily journal and balance-sheet reports.

  • Payroll and investors

    Salaries, leave and payments, plus investor deposits, withdrawals and period closing with snapshots.

  • Permissions

    Role-based access with fine-grained permissions across more than twenty modules.

05

How it’s built

  • Separate sign-in for clients

    Staff and client companies sign in through separate Laravel guards. Clients join by email invitation (valid for 72 hours) and can reset their own passwords.

  • Server-side tables and exports

    AJAX DataTables keep long lists fast, and exports produce PDF and Excel files with Persian and Arabic text set in the Vazirmatn font.

  • Archive instead of delete

    Records use soft deletes and an archive flag, so financial history stays available for review.

Integrations

  • Spatie Laravel Permission
  • Yajra DataTables
  • DomPDF and mPDF
  • Email invitations

06

Challenges and decisions

  1. Right-to-left text in exports

    Persian and Arabic names in PDF exports needed a remapped font and a right-to-left fix before they printed correctly.

  2. A portal per company

    The portal runs on its own authentication guard and shows each client only the companies linked to its account, including clients with several companies.

07

What was delivered

  • An invite-only client portal with PDF downloads
  • Investor accounting with period closing
  • Container item, stock and invoicing improvements
  • User and role management, and navigation that works on phones

Next case study 09 / 09

Next case study: zar

Online store · tutorial-based · 2025–2026

A fashion-boutique storefront that I rebranded and extended from an open-source Next.js, Sanity and Stripe tutorial, with a new design, catalogue search and pagination.

zar homepage: a cream hero card reading “Timeless Elegance” with “Shop Collection” and “View New Arrivals” buttons, beside the gold zar emblem.

Have a project in mind? Let’s talk it through.

Tell me what you are building, what it needs to do and when you need it. I will reply with questions, an honest view of the options and the next steps.