Work

Mineral tracker

A Django system for mineral stock and transport, built around four roles that each see a different slice of the same data.

Role
Engineering
Built with
Django, Python, PostgreSQL, django-allauth
The store dashboard: a banner reading 'Materials, tools, and flows in one view', three summary cards, and tables of stock balances and recent inbound and outbound movements.

A management system for mineral stock and its movement, what is held, what is moving, and who signed for it.

Shipment tracking: a table of five shipments listing mineral, truck plate, route, weight, departure and arrival. Gypsum and copper ore are still in transit and show a dash where the arrival time will go.

The records in these screenshots are sample data, entered to exercise the dashboards. They are not real trading figures.

Roles are the design

The system defines four roles, administrator, operations manager, financial manager and store keeper, and they are the organising idea rather than a permissions afterthought. Each role opens onto a different part of the same records, which is what separates a tool that a warehouse actually uses from a CRUD interface with everything visible to everyone.

Login is required everywhere: there is no page that shows a record to someone who has not signed in, and no route that quietly leaks one.

What that separation looks like in practice: the financial manager opens onto money, and the store keeper opens onto stock. Neither screen is a filtered version of the other.

The financial manager’s view: five totals across the top — inflow, outflow, gross profit, government tax at eighteen per cent, and net profit, all in Tanzanian shillings — above a table of recent payments and two panels tracking debt owed by and to the business.

The store keeper’s view: stock balances by item on the left, the latest inbound and outbound movements on the right, each one carrying a reference such as a goods-received number.

Tax is computed rather than typed: the rate is a setting, and the dashboard derives government tax and net profit from the inflows and outflows already recorded, so the figure cannot drift from the payments it is drawn from.