انتقل إلى المحتوى الرئيسي
Food & agriculture inspection5 min read

Inspection and Laboratory Management Software, Designed and Built by Markit Media

Markit Media designed, engineered and tested a complete inspection and laboratory management platform: inspection reports, container sheets, laboratory results, commercial invoices and certificates in one connected workflow, with eight user roles, approvals and a full audit trail.

Website DevelopmentCRM DevelopmentLaboratory Software Development
Inspection platform dashboard with a work queue, key figures and a tonnage chart

Project snapshot

Client
Inspection & Laboratory Management Platform
Industry
Food & agriculture inspection
Year
2026
Deliverables
Four-module web platform (operations, laboratory, invoicing, certification), 8 user roles, 5 PDF documents, automated test suite, walkthrough video

The challenge

An inspection job passes through five hands: the inspector on site, the operations team, the laboratory, finance and the person who signs the certificate. Each often keeps its own file, so the same details get retyped and figures can drift apart.

The brief we set was one system where a single job record flows through all five, every figure is checked by the software and every approval is recorded.

What Markit Media did

This was a full-stack build, and we did every part of it ourselves.

  • Product and interface design in the Markit Media brand, with a work queue, progress bars and next-step guidance
  • Web engineering: a Next.js, React and TypeScript application with server-side rules on every change
  • Workflow and rules engineering: role-based approvals, locks, validation and an audit log
  • Document engineering: five PDF documents generated on the server, in the layout of a standard export inspection report and container sheet
  • Quality engineering: unit tests and an automated browser test suite that plays each role
  • A narrated walkthrough video of one job from creation to certificate

By the numbers

  • 4 connected modules: Operations, Laboratory, Commercial invoicing and Certification
  • 8 user roles, with approvals enforced by role
  • 19-table database schema, designed to move to PostgreSQL
  • 5 PDF documents generated by the platform
  • 49 scripted end-to-end checks across all eight roles, plus 9 unit tests

How a job moves

Every job follows the same path, and each screen shows a progress bar and tells the current user what to do next.

  • Create and assign: an Operations Manager sets up the job and assigns an inspector
  • Inspect: the inspector completes the report and the container sheet
  • Review and lock: the manager approves the report and the job locks
  • Test: the laboratory registers a sample, enters results and a second person approves them
  • Invoice: Finance builds the invoice from the job and the samples
  • Certify: a certificate is drafted from approved data, reviewed and approved

Operations: the inspection report and container sheet

We rebuilt the inspection form field for field: sampling, single and double packing with top and bottom stitching and package condition, weighing and tare, a summary of inspection and loading today, previously and in total, lot details with seals, remarks, an attachments checklist, and the supervisor's timeline, travel and witness details.

Containers follow the container sheet: up to fifteen stack positions with the bags in each, the net tonnes, zig-zag and door seals, loading times, polymer and Kraft paper placement, silica gel, ventilators and sign-offs. Totals are calculated as the inspector types.

  • Net tonnes must match bags times pack size within one per cent, or the job cannot be sent for review
  • Container numbers must be four letters and seven digits, with no duplicates in a job
  • Loading cannot finish before it starts, and foreign-matter packages cannot exceed the packages emptied
  • Reviewed jobs lock, so an approved report cannot be changed by accident

Laboratory: results judged as they are entered

A sample is registered against the job and lot, and a template for the commodity pre-fills the parameters, methods and limits. Numeric parameters pass or fail against inclusive minimum and maximum limits, text limits such as "Absent" must match, and the verdict appears as the result is typed.

  • A moisture reading of 14 against a limit of 14 passes; 14.01 fails
  • Results are locked once submitted
  • A second person approves, and the approver cannot be the person who submitted
  • A chain of custody records each hand-over of the sample

Commercial invoicing

The invoice builds itself from the job: one line for the inspection, one per container, and sampling and analysis lines for each laboratory sample, priced from an editable service catalogue. Finance can change quantities and rates, add a tax rate and a discount, and watch the totals update. Money is calculated in whole paisa so that rounding never drifts. An invoice moves from draft to in review, approved and exported, and approved invoices export as CSV for accounting.

Certification

Three document types: an inspection and loading certificate, a testing certificate and an export compliance statement. A certificate can only be drafted from a reviewed job, and a testing certificate also needs an approved laboratory sample. Only the Certificate Approver role can approve one; an Admin cannot. Every document carries a verification code.

Control and audit

Each person sees and can change only what their role allows: Admin, Operations Manager, Inspector, Lab Analyst, Lab Approver, Finance, Certificate Approver and Read Only. Inspectors can edit only the jobs assigned to them. An audit log records who did what, and when, for every change and approval. Sign-in is private, with hashed passwords, signed session cookies and a limit on failed attempts.

Built for the field

The dashboard opens on a work queue for the signed-in role, every job explains the next step, and search is always at the top. Long forms warn before unsaved work is lost. The screens work at phone and tablet widths with no sideways scrolling.

Engineering and testing

The application is built with Next.js 15, React 19, TypeScript and Tailwind CSS 4. Every change goes through server actions that check the user's role and the allowed workflow step. Data lives in SQLite with a 19-table schema designed to move to PostgreSQL, and the PDF documents are generated on the server. The calculation rules sit in their own module so they can be tested on their own.

Nine unit tests cover the calculations: stack totals, tonnage tolerance, laboratory limits at their boundaries, invoice arithmetic and workflow permissions. Forty-nine scripted end-to-end checks then drive the application in a real browser as each of the eight roles, creating jobs, trying invalid input and confirming that a role cannot do what it should not.

Build something like this with us

If your business runs on jobs, samples, approvals and paperwork, whether that is inspection, a laboratory, quality control or any process that moves through several people, we can build a system around the way you work. Talk to Markit Media about your process.

Screens from the platform

Captured on 29 October 2026. Names, numbers and rates shown are sample data.

Inspection platform dashboard: a work queue, four key figures, a monthly tonnage chart and jobs by status
Dashboard: the work queue for the signed-in role, key figures and tonnage by month.
An inspection job in Ops Review with a five-step progress bar and a panel explaining the next step
A job: progress bar, next-step guidance and the approval actions for the current role.
Inspection form showing the sampling section and the packing, stitching and condition table
The inspection form: sampling, then packing, stitching and package condition.
Container editor with fifteen stack positions, total bags and net tonnes, and a check against pack size
Containers: bags per stack position, automatic totals and the tonnage check.
Laboratory sample with limits per parameter, results and a red FAIL verdict on moisture
Laboratory: limits per parameter and an automatic pass or fail verdict.
Invoice built from a job, with editable lines, tax and discount and live totals
Invoicing: lines built from the job, with tax, discount and live totals.
Certificate preview with laboratory results, a diagonal watermark and an approval chain
Certification: a preview with the laboratory results and the approval chain.
Role permission matrix for eight roles with an audit log beneath
Roles and the audit log.
Top of the inspection and loading report PDF with sampling and packing tables
The inspection and loading report as a PDF (top of page one).
Container sheet PDF with rows of fifteen stack positions per container
The container sheet as a PDF.
Sign-in screen of the inspection platform in black and white with the Markit Media logo
Private sign-in.
Containers tab of a job on a phone, with progress bar, next-step panel and totals
The containers tab on a phone.

Want Similar Results?

Let's discuss how we can apply the same approach to your business.