← All work

Paper trading, converting and cutting · Built and working

Horreya

A complete Arabic operations system for a paper trading, converting and cutting factory, from the delivery of a roll to the customer's statement. It installs on the device and keeps working with no internet.

Client
Horreya
System type
Full ERP, an installable web app (PWA) with six roles
Our role
Full build — understanding the factory's operations, then design and engineering
Horreya
1 / 6

A complete operations system for a paper trading, converting and cutting factory, built to replace Google Sheets and Apps Script. Incoming rolls, stock, slitting, sheeter runs, sales, collections, customer statements, the cash desk, staff and payroll live in one place: 15 screens and 44 tabs. Every movement is written once into a ledger and every balance is calculated from it, never typed. It installs on the device, keeps working with no internet, and gives each of six roles only the screens and actions it is allowed, with the server enforcing every write. The interface is Arabic, right to left, throughout.

15
screens, including a public roll page that needs no sign-in
6
roles, with permissions set per employee
14 × 4
permission sections × actions: view, add, edit, delete
Sector
Paper trading, converting and cutting
System type
Full ERP, an installable web app (PWA)
Coverage
15 screens · 44 tabs · 14 sidebar sections in four groups
Users
Six roles: full-access owner, view-only owner, accountant, production supervisor, storekeeper and viewer
Screens per role
Owner 14 · accountant 10 · production supervisor 8 · storekeeper 8 · viewer 5
Language and direction
Arabic only — right to left on every screen, table and form, with Latin digits (0–9) so financial figures read easily
Devices
Desktop and phone, and it installs on the device as an app — the sidebar becomes a bottom bar on a phone
Without internet
Keeps working and uploads everything when the connection returns

The problem before the system

The factory ran everything in Google Sheets, with Apps Script programs beside them. That works at first. With daily use, its limits became clear.

Read the detailHide the detail6 points
Stock
— An item's balance was calculated by formulas spread across several sheets. Any row edited by hand could change a balance with no written record.
Sheeter and slitting
— The cut weight, the shortfall and the cost were calculated in cells, and nothing stopped an incomplete entry.
Sales and collections
— The invoice and the customer's balance sat in separate files, so a statement had to be assembled.
Permissions
— Whoever opened the file saw everything, and whoever could edit it could change anything.
Without internet
— A file on the network stopped when the connection dropped.
Change history
— There was no clear record of who changed what, and when.

Understanding the factory before writing a line

Read the detailHide the detail

We started by reading what actually ran: the original Apps Script programs, the factory's sheets and their formulas — not what was said about them. We pulled out the operating rules exactly as they were: how an item's balance is calculated, how the sheeter formula works, how invoices are numbered.

Then we treated those rules as a contract. They change only with the owner's approval, and before any large step we wrote down what would change, why, and what it would affect.

We made one founding decision: the interface the owner approved is the interface the factory runs on, so the people on the floor did not have to learn an unfamiliar system in a single day.

Beyond the main flow, the system also covers the jobs a paper office does by hand all day. Prints match the screen, whether invoices, receipts, statements or job tickets, and a PDF comes from the same sheet. Rows copied from Excel can be pasted in: the system recognises the kind of sheet and rejects a file that is uploaded twice. The paper calculator accepts sums, such as adding a list of weights.

We change things in small steps that can be reversed. Anything that touches balances or money goes through tests that run on a local copy kept apart from the real data, and every decision about a business rule is recorded and shown to the owner before it is carried out.

How it runs: one ledger for every movement

Everything that happens in the factory is recorded as a movement in a ledger, and balances are calculated from the ledgers themselves, never written by hand.

Incoming01Slitting02Sheeter run03Sales invoice04Collection05Customer statement06A GOVERNED LOOP6
Read the detailHide the detail11 points
  1. 01

    Incoming

    Receiving rolls or pallets raises the item's balance, creates a lot and gives every roll a code with a QR label.

  2. 02

    Slitting

    One operation deducts the parent roll and records everything it produces.

  3. 03

    Sheeter run

    A work order uses rolls and works out the cut weight, the shortfall and the cost from the approved rules.

  4. 04

    Sales invoice

    A numbered invoice: quantity times price gives the total, and the stock balance is deducted.

  5. 05

    Collection

    A receipt records the payment, by cash, transfer, cheque or wallet.

  6. 06

    Customer statement

    Invoices and payments join into one balance nobody argues over.

The balance is calculated

Every figure on the screen is calculated from the ledger movements, not typed in by hand.

Cancel, do not delete

An invoice, a job ticket and a receipt are marked cancelled, and the record stays visible.

A job ticket deducts nothing until it is closed

Stock moves only when the ticket is closed with the real production.

Numbers never repeat

Invoice numbers and job ticket numbers run in sequence, and every roll has its own code.

The server has the final say

Hiding a button on the screen is only a convenience. The real refusal happens on the server, on every write.

The practical result: any customer balance reads back to its invoices and receipts, and any roll in the warehouse reads back to its delivery and every run it went through.

The departments

13
HomeStockIncomingSheeterSlittingSalesCollectionsAccounts and reportsStaff and payrollCash desk and walletsPaper toolsSettingsSync centre13departmentsONE PLATFORM
Read the detailHide the detail13 points
Home
Figures for the period, the cash balance, customer dues and alerts that need a decision.
Stock
Balances by weight, rolls, sheets and pallets, smart search by specification, the item card, count and adjustment.
Incoming
Receive a supply or goods held for a customer, print QR roll labels, paste rows from Excel.
Sheeter
Work orders, direct runs and a log, with posting to sales.
Slitting
Slitting operations, and slitting orders held until the weights come back.
Sales
Invoices by the ton or the kilo, printed with the parts the user picks, as PDF or sent.
Collections
Receipts by several payment methods, and adjustments on the customer.
Accounts and reports
Customer statements, debts, the cutting-service statement, storage for others and general reports.
Staff and payroll
Employees, movements (advances, deductions, overtime, absence), a payroll sheet and a printed payslip.
Cash desk and wallets
A daily cash desk, wallets and accounts, cheques and the owner's ledger.
Paper tools
A paper calculator that takes formulas, and paper lists exported to Word and CSV.
Settings
Items, customers and suppliers, prices and limits, users and permissions, the audit log.
Sync centre
When two copies of a row conflict, the difference is shown field by field and the user decides.

Arabic first, installable, and working offline

The interface is Arabic, right to left, on every screen, table and form. It runs on a desktop and on a phone, installs on the device as an app, and keeps working when the connection drops.

Read the detailHide the detail7 points
  • Figures use Latin digits (0–9), so financial numbers are easy to read inside Arabic text.
  • On a phone the sidebar becomes a bottom bar, and the quick-entry buttons (incoming, sheeter, slitting, sale, collection) are enlarged for touch.
  • Installed on the device, the app opens even with no connection. A copy of the data is kept on the device, and every movement waits in a queue until it can be sent.
  • When the connection returns, everything is uploaded on its own. A light in the header shows whether the system is connected.
  • Sending is safe to repeat: every movement has its own fixed identifier, so sending it twice records it once.
  • Every roll label carries a QR code that opens the roll's own page, so the warehouse can trace a roll with a phone camera.
  • Prints match the screen — invoices, receipts, statements and job tickets — with the PDF made from the same sheet.

Home on the phone

1 / 5

The screens

33 screens

The software is real; the data in the screenshots is not. Every customer, supplier, employee and user, and every price, weight, invoice, balance, cheque, salary and date shown is generated demo data, built on a separate local data set with no connection to the factory's real data, and the date in every capture is fixed at 7 October 2026. What is real: the application itself with its screens, tabs, buttons, calculations and printing, and the name Horreya with its logo, shown with the factory owner's consent.

Overview

Home: the factory on one screenLive indicators and alerts that need a decision

Stock

Current stock balanceStock by weight, rolls, sheets and pallets
Smart search by specificationSearch with a tolerance on grammage and size

Incoming

Incoming logSupply, goods held for a customer and slitting outputs in one log
The roll page and its originEvery roll traced from delivery to every run

Sheeter

Sheeter logCut weight, shortfall and cost are calculated, not typed
Work ordersRequest, approval, then run — nothing deducted before closing

Slitting

Slitting logOne operation: the parent deducted, its outputs and the waste

Sales

Invoice logNumbered invoices, reviewed and cancelled with a trace
Printing an invoiceAn invoice with the parts the user chooses

Collections

Collections and receiptsPayment by several methods, and adjustments on the customer

Accounts

Customer statementA balance built from invoices and payments
Customer debtsCustomers ranked by what they owe
General reportsSales, profit and waste as charts

Staff and payroll

Staff dashboardThe month's summary and its alerts
Employee cardsA file for every employee with their numbers
Movements logAdvances, deductions, overtime and absence, with a trace
Payroll sheetPay worked out from the movements

Cash desk

Daily cash deskCash that moves with every expense and receipt
Accounts and walletsWallets and bank accounts with their movements
The owner's ledgerA private ledger only the owner sees
Cheque follow-upCheques by status, with a warning before they fall due
Cash desk reportsExpenses, labour and daily movement as charts

Tools

Paper calculatorThe factory's standard calculations on one screen
Paper listsItem lists that can be exported

Permissions and audit

Permissions by role and employeeWho adds, edits and deletes is set by the owner
Audit logWho did what, and when
Customers and suppliersCustomers and suppliers, with their credit limits

Roles

Home under four rolesThe menu changes with the permission
Owner against view-only ownerAn account that sees everything and changes nothing
Production supervisor on the sheeterA work screen with no sales, collections or cash desk
Who may do what, and where it is enforcedThe server checks every write, whatever the screen shows

Phone and offline

Working with no internet, and syncingSaved on the device first, then sent; a repeated send is safe

What changed

BeforeAfter
Where work is managed: Google Sheets and Apps Script programsOne system with an Arabic interface
Balances: formulas spread across several sheetsCalculated from the ledgers themselves
When the internet drops: work stopsWork continues and syncs later
Permissions: whoever opens the file sees and editsSix roles, and permissions set per employee
Change history: no clear recordAn audit log, and cancellation instead of deletion
Invoices, receipts and statements: assembled by handPrinted, saved as PDF and sent from the screen
Reports: prepared by handSent to Telegram with one press

This table describes a change in how the work is done — what the system now does that the spreadsheets did not — not measured gains. There is no before-and-after measurement of time saved or errors avoided, so no percentage is claimed.