Welcome
| Status | Batch Number | Product Name | Expiry Date | Days Remaining | Storage Location | Actions |
|---|
Application
Training Manual
Everything you need to know about using SFM — section by section, role by role. Learn what each screen does, who can access it, and how to get the most out of every feature.
Welcome to SFM
SFM is a Shop Floor Management Platform — one place to run the daily work of a plant. It is built as a set of modules on a shared plant model, so every site switches on the functions it actually needs and adds more over time. There is no fixed focus area: quality, operations, maintenance, materials, people, safety, facilities and supply-side functions all live on the same foundation, with the same login, the same plant hierarchy and the same role-based access control.
Every module is built around a real use case and a real user profile. We start from how your team already works — who walks the floor, who signs the check, who approves the pass, what the auditor asks for — and shape the module to that. If a function you need is not on this list yet, it gets built to your process and added to your plant: the platform is designed to grow on request, not to be worked around.
Each module is licensed and switched on per user, so two people at the same plant can see completely different sidebars. Your admin controls which of these you have.
Open the app URL in your browser. Enter your email — the system auto-detects your company and authentication method (password or SSO).
Use the left sidebar to switch between modules. Module groups (Sampling, Calibration, Walkabout, Pest Control) are shown based on your assigned permissions.
Your access level determines what you can see and do. Regular users (Level 7) manage day-to-day operations. Admins (Level 1–5) have additional configuration and reporting access.
Every module supports PDF and Excel/CSV exports. Look for the Download or PDF button at the top of list/history screens to export filtered results.
The system sends email notifications for walkabout submissions, reopens, and calibration due dates. Make sure your email is correctly set in your user profile.
All data is scoped to your assigned plant and department. You will only see records for your plant unless you have Country, State, or Company admin access.
Overview sits on its own at the top of the sidebar (this page). Below it, screens are organised into 9 collapsible groups — one per module, plus Administration. A module group only appears if your account has been granted access to that module, so your sidebar is usually shorter than this list.
Sample Management
Track the complete lifecycle of QC samples from receipt to expiry. Log check-outs and returns, monitor batch expiry dates with colour-coded alerts, and export reports for audits.
The dashboard gives a live snapshot of your plant's QC health — total active samples, expiry alerts, recent transactions, and calibration due counts — via KPI cards and interactive charts.
Register a new QC sample into the system by filling in batch details, storage location, and expiry information. Generates a printable label with QR code.
Find any sample in your plant's inventory using free-text search, batch ID lookup, or filter by storage location, status, or expiry range.
Record when samples are taken out from storage for testing and when they are returned. Every transaction is timestamped and linked to the user who performed it.
Full audit trail of all sample take-outs and returns. Filter by date range, batch ID, user, or transaction type. Export as Excel for compliance reporting.
A live dashboard of all samples sorted by expiry date. Colour-coded rows immediately highlight which batches need attention — from Expired to Safe.
Archive of all batches that have been expired or removed from active inventory, with full audit trail including who removed them and when.
Interactive charts showing sample trends, storage utilization by rack/bin, transaction volume over time, and expiry distribution across your plant.
Equipment Calibration
Manage the full calibration schedule for all lab instruments. Track due dates, upload calibration certificates, log updates, and receive proactive alerts before equipment becomes overdue.
The main equipment register showing every instrument in your plant with its current calibration status. Status is automatically calculated from the due date.
Full history of all calibration events per instrument — shows who performed each calibration, when, certificate reference, and any notes added.
A chronological log of all updates made to any equipment record — tracks both calibration updates and due date changes, with user attribution for every entry.
Charts showing calibration status distribution (pie/bar), upcoming due dates by month, and historical calibration completion rates across equipment categories.
Quality Walkabout
Capture, track and close quality observations found during plant walkabouts. Follows a Draft → Open → Closed workflow with CAPA tracking, email notifications, attachments, and PDF reporting.
The main register lists all active (Draft + Open) walkabout observations for your plant. Raise new observations, assign action persons, and track progress through the lifecycle.
All closed walkabout observations with full audit trail — close date, CAPA notes, reopen count, and all comments/attachments. Paginated 20 per page.
Personal view showing every open walkabout observation where you are the assigned Action Person. Paginated 20 per page. Your personal to-do list for CAPA completion.
Complete audit log of every state change, comment, attachment upload, and edit across all walkabout observations — with user name and timestamp for each action.
Charts showing observation trends over time, status distribution, top areas with repeat observations, average close times, and department-wise breakdown.
Pest Control
Comprehensive pest management covering insect traps, rodent bait stations, spider pads, chemical spray tracking, meetings with MOM, and annual planning — all with heatmap dashboards and PDF reporting.
Manage the pest control team for your plant — list team members with their roles (Internal/External contractor), contact details, and assignment status.
12-month schedule of planned pest control activities — fogging, spraying, baiting — for every area of your plant. Shows planned vs. completed activities with status tracking.
Visual heatmap of your plant layout showing device placement and current pest pressure level by location. Four heatmap views available, each colour-coded by activity intensity.
Master register of all pest control devices in your plant — fly catchers (previously "insect killers"), rodent bait stations, glue traps, and spider pads. Each device has a unique code, type, and location coordinates for the heatmap.
Enter fortnightly or monthly readings for every pest device in the plant. Five device types have their own input format: Insect Internal, Insect External, Rodent Bait (Outer), Rodent Glue (Inner), and Spider Pad.
Log every chemical spray application — chemical name, quantity used, target area, applicator, and date. Linked to the Pest Chemical Master for chemical details.
The planned spray schedule for the year — which areas get treated, with what, and how often. Spray Tracking then records what actually happened against this plan, so you can show planned-versus-done to an auditor.
Dedicated planning and service logging for lizard control, kept separate from general spraying because it runs on its own schedule and method.
A full audit trail for the module — every device, reading, spray, chemical and meeting change, with who made it, when, and what it was before.
Schedule pest control review meetings, record attendance, and manage Minutes of Meeting (MOM) with action items, owners, and due dates.
Pest control document repository — upload and manage SDS sheets, contracts, compliance certificates, inspection reports, and any other regulatory documents.
Generate comprehensive pest control reports — monthly readings summaries, trend analysis, infestation level reports, and compliance documentation — all exported as clean A4 PDFs.
Master list of all pesticides and chemicals approved for use at your plant. Each entry stores name, active ingredient, dilution ratio, target pest, regulatory registration number, and safety notes.
Blue Cards
A shop-floor improvement-suggestion system. Anyone can raise a Blue Card describing a problem and a suggested solution, tagged to a Zone and Working Place. Each card moves through its lifecycle — Open → Acknowledged → In Progress → Implemented (or Rejected) — with optional savings tracking, and implemented ideas can be Rewarded to recognise the person who raised them. All data is plant-isolated, with a full activity log behind every change.
The kiosk-style entry screen where any employee submits an improvement idea. Each submission gets a unique, permanent card number and starts in the Open state.
The management board for all cards raised at your plant. Move each card through its lifecycle and record who did what at every stage.
Every card you have raised, with its current status — so a submitter can follow their own idea through to implementation without asking an admin.
Dashboards summarising card activity for the plant — totals by status, cards by zone and working place, implementation rate, and cumulative savings from implemented ideas.
Per-plant configuration for the module, across three tabs:
A complete audit trail of every create, edit, status change, reward, delete and restore in the module — who did it, when, and exactly what changed from what to what.
Checklists
A universal, configurable checklist and inspection engine — build any checklist without code, run it on mobile with photo evidence, and get an automatic pass/fail with a full audit trail. Templates are organised into sections and questions with per-question rules, and every published template is versioned so past runs never change retroactively. All data is plant-isolated, with optional company-standard templates shared across plants.
Checklists is the bank — every checklist at your plant with its category, scope, status, version and the builder that made it. There are now two ways to author one, and they write into the same bank, so versions, runs, history, audit and PDF work identically behind either:
Either way a checklist is organised into sections, each holding a list of questions. A Standard or Custom pill appears wherever a checklist is named, so you always know which editor owns it.
A checklist is built once and then assigned to the modules it belongs to. Every module now carries the same Checklist Configuration screen, showing the checks that landed there — so a check written for the gate is found at the gate, not hunted for in a list of two hundred.
The execution screen operators use to carry out an inspection, designed as a single scrollable form that works well on mobile devices.
Your personal inbox of checks that are due. When a schedule generates runs, everyone on the recipient list sees them here — this is where an operator starts their day.
Named, reusable sets of people at your plant — "Shift A Operators", "QA Team", "Line 3 Leads". Build the group once and target it from any schedule instead of re-picking individuals every time.
Set a check up once and let it run itself. A schedule generates the runs, assigns them to the right people, and emails them — every day, week, month or quarter, without anyone remembering to start it.
station.html on the deviceA shared tablet or panel PC mounted at a physical place on the floor, so operators run their checks where the work happens instead of walking to a desk. A Station is registered once and permanently bound to a place — a plant, an area, a work center, a specific machine, or a gate.
A dashboard of every completed (and in-progress) run at your plant, with its overall pass/fail result, the template and version used, and who ran it and when.
Visitor Management
A complete visitor and gate-pass system: register visitors once, raise and approve gate passes, print QR badges, and check visitors in and out at the gate — by QR scan or RFID card tap. Visitors are shared company-wide; gate passes and history are isolated by plant (or by Location for gate staff). Roles decide who sees what: admins get everything, Security runs the gate, and normal users only handle passes they raised or must approve.
It also covers the parts of a gate that only show up in real use: a Today list of who is expected, group and multi-day visits, vehicles arriving, a Muster List that prints for a fire drill with the network down, auto check-out for people who never tapped out, a blacklist, masked ID numbers, a full activity log — and a phone/tablet layout you can install on the home screen and run from the barrier.
Register a visitor once and reuse them anywhere in the company — no re-typing at each plant.
Raise, approve and manage visit requests. Each pass gets a unique UGPN-YYYY-NNNNNNNN number and a QR code.
mh-12/ab 1234 → MH 12 AB 1234). It appears on the pass, in the CSV export and in the activity log.A party of people, or the same person for a run of days, without any new concepts to learn at the gate.
Who is inside the plant right now — for the daily count, and for the head count at the assembly point.
The visitor master is shared so nobody re-types the same person — but sharing a list is not the same as sharing the right to change it.
••••234F) for anyone who may not edit that visitor. Passport and licence numbers are not casual browsing material.Visitor Management is built to be run from a phone at the barrier, not only from a desk.
Two hands-free ways to check visitors in and out at the gate.
Reporting and the master data behind the module.
Fleet Management
Everything that happens to a truck between the barrier and the road again: gate-in, docking bay, weighbridge in, load or unload, weighbridge out, gate-out. The stages are a ladder enforced on the server — a truck cannot skip one, and every card shows the single next action it is waiting for, so the gate clerk, the storeman and the weighbridge operator are all looking at the same truth.
It is built on the plant model you already have. Gates are the same gates Visitor Management uses — a truck and a visitor come through the same physical barrier, so they are never entered twice. Truck types and delivery types are plant master data, not a Fleet setting, because more than one module will want them. And a truck inspection is not a special Fleet form: it is an ordinary checklist, built in the Checklist module and required at whichever stage you choose.
The state of the yard on one screen — how many trucks are expected, arrived, in transit, loading, unloading, done and gone today.
Register a truck as it reaches the gate — or before it arrives, as an expected delivery. Every entry gets a unique number, TE-YYYY-NNNNNN, sequential per company per year.
One card per truck, and the card is where the day is actually run. The action buttons change with the stage the truck is at, and the next one due blinks.
Where the truck parks, and what it weighed before and after.
A truck inspection is an ordinary checklist, built in the Checklist module like every other check. What Fleet adds is when it is demanded — you write rules, and the rules block the ladder.
What was ordered against what turned up, and the record of everything anyone did.
Fleet is off for everybody until it is granted. Nobody gains a new module simply because it was installed.
System Administration
Full system configuration and user management. The Administration section is only visible to Master Admin (Level 1) and Company Admin (Level 2). Some sub-sections are Level 1 only.
Define the physical storage infrastructure for samples — add Plants, Racks per plant, and Bins per rack. This structure is what all sample location dropdowns use throughout the system.
Manage the organisational hierarchy used for data scoping — Companies → Countries → States → Plants → Departments — plus the shop-floor asset tree inside each plant. Every piece of data in the system belongs somewhere in this structure.
Add, edit, deactivate users and assign their access level, module permissions, and plant/department. User Roles are also managed here (moved from Master Data in v1.3.0).
Licensing control for each customer company — how long their subscription runs and how many users they may create, overall and per role.
Make the app look like the customer's own. Turn branding on for a company and its users see that company's identity after they log in.
Per-plant, per-module behaviour — the knobs that let two plants on the same system run their processes differently. This page lives in the sidebar under Checklists, but it configures more than checklists, which is why it is documented here with the other admin screens.
The authentication and account trail for compliance: logins, logouts, failed attempts, password changes, and account create / edit / deactivate events, with who and when.
Configure enterprise Single Sign-On (OIDC) per company. Once configured, users with a matching email domain are automatically redirected to your identity provider (Okta, Azure AD, Google).
yourcompany.com) that triggers SSO.https://your-server/auth/callback.Configure label printer settings — POS thermal printer connection details, label dimensions (width, height in mm), and QR code size. Supports both A4 and ESC/POS thermal formats.
SMTP settings for system email notifications — walkabout alerts, calibration reminders, and meeting invites. Configure sender address, SMTP host, port, and authentication credentials.
Access Level Reference
SFM uses 10 access levels. Each level determines which sections are visible, what actions can be taken, and which data scope (company / country / state / plant / department) is applied.
| Level | Role Name | Data Scope | Key Capabilities | Restrictions |
|---|---|---|---|---|
| 1 | Master Admin | All Companies |
Full system access
All modules
All admin screens
SSO Config
Printer Config
Email Config
Master Data
|
None |
| 2 | Company Admin | Single Company |
User Management
System Docs
All modules
|
No SSO ConfigNo Printer/Email ConfigNo Data Vis (Admin) |
| 3 | Country Admin | Country-wide |
All module screens
Reports & exports
|
No Administration section |
| 4 | State Admin | State-wide |
All module screens
Reports & exports
|
No Administration section |
| 5 | Plant Admin | Single Plant |
All module screens
WQA Open/Close
Walkabout Activity Log
Pest Team manage
Device Master edit
|
No Administration section |
| 6 | Department Manager | Department |
All module screens
Departmental data
|
No Administration section |
| 7 | Regular User | Plant |
Enter/search samples
Log transactions
Raise walkabouts
Enter pest readings
My Actions
|
No AdministrationNo WQA Open/Close |
| 8 | Viewer | Plant |
Read-only all screens
Export/download
|
No create/editNo Administration |
| 9 | Plant Coordinator NEW v1.3.0 | Plant-scoped |
Close walkabout observations
Auto CC'd on submissions
Plant-scoped data
|
Cannot Open observationsNo Administration |
| 10 | Security NEW v1.9.0 | Plant / Location gates |
Visitor Register
Gate Passes
Check-in / Check-out
QR Scanner
RFID card writing
Badge printing
|
Visitor module onlyCannot approve passesNo Administration |
In addition to the access level, each user's visibility of the four main modules (Sample Management, Equipment Calibration, Quality Walkabout, Pest Control) is individually controlled via Module Access settings in User Management.
Release Notes
Complete changelog for SFM — every feature added, bug fixed, and improvement shipped since v1.0.0.
- Raise a pass for material leaving the plant — RGP when it must come back (repair, trial, tools), NRGP when it does not. Lines, quantities, values, the vendor and the reason, with an expected return date for an RGP
- A pass reads like its challan — one page with every field, the attached files opening on the page, every approval with the person's name, e-mail and time, the gate and receipts. The same page for the approver, the requester and Security; only the buttons change
- Optional drawn signatures — the requester, each approver and Security may sign; the signatures print in the challan's boxes
- The challan QR opens the pass — a phone's own camera opens it after the sign-in; Security lands on the gate with the pass found. The hand scanner and the in-app scanner read it too
- View the challan before approval — stamped DRAFT or PENDING APPROVAL, with no QR; once fully approved it prints clean every time (every print is still counted)
- Each plant chooses its currency — its symbol and how amounts are written, everywhere including the challan and the e-mails; and whether the company logo shows on passes
- Vendors, materials and lists by Excel — download a template, fill it, upload: you see what will be added or changed first, and nothing is saved until you apply
- (i) help on every RGP / NRGP page — how to use that page, step by step; the Workflow guide explains the set-up and who gets which e-mail
- Approval set per plant, not hard-coded — steps by value band and condition. An approver step can be fixed people, anyone with a grade, a person the requester picks, or the requester's reporting manager. Approve in the app, on a laptop or a phone; e-mail and phone notifications only tell people something is waiting
- The printed delivery challan — legal copies, a QR code (it still prints when the PC has no internet), and the Place of supply printed only when the material goes to another state
- The Security gate — scan the challan QR, count the material, check the e-way bill / invoice, take a photo, note the driver and let it out. Returns are booked the same way. The gate also works as a Station Mode tile on an iPad (“RGP / NRGP gate” in Master Data → Stations)
- Incoming at our other plants — a pass sent to another of our own plants shows up there to be received
- Line outcomes, extensions, cancel and close, and a full history of every change with the old and the new value
- Dashboard and seven reports — each number on the dashboard opens its list; every report exports to Excel
- Paper (offline) entries — a pass written in the paper book while the system was down can be entered afterwards with its real time
- Reminders and escalation for material that is due back — off until Starengts switches them on
- Access is off for everybody until it is granted. Nobody gains RGP / NRGP simply because it was installed — grant it per user in Module Access
- The camera scan dialog's “Try again” button did nothing — it failed every time in every scan dialog. It works now, and if the camera cannot start the dialog says why
- Station Mode on an iPad — the kiosk page could grow taller than the screen, cutting off the footer and the bottom of long screens
- Master Data → Stations has a fifth app, “RGP / NRGP gate”
- Person pickers find people by grade — typing part of a grade (e.g. MC2) finds everyone who holds it; the grade shows beside the name (RGP pickers and Reporting Manager)
- An (i) button in the header beside Refresh opens how to use the page you are on (RGP / NRGP first)
- No migration to run. The new tables are created when the app starts. The first start also records “no access” to the new module for every existing user
- The truck at your gate, from the barrier to the road again — gate-in, docking bay, weighbridge in, load or unload, weighbridge out, gate-out. Nine screens: Dashboard, Add Truck, Truck Cards, Assign Docking Station, Order Details, Checklist Configuration, Reports, Weight Management and Activity Log
- The stages are a ladder enforced on the server — a truck cannot skip a step, whatever the screen offers. Each card shows the single next action it is waiting for, so the gate clerk, the storeman and the weighbridge operator are looking at the same truth. Every entry gets a unique number,
TE-YYYY-NNNNNN, sequential per company per year - Gates are the ones you already have — a truck and a visitor come through the same physical barrier, so gates are read from the same master data Visitor Management uses rather than being entered a second time. Docking bays hang off a gate, and the plant comes from the gate, so it is never asked for twice
- A bay is occupied only while a truck is actually on it — it frees the moment loading or unloading finishes, before the truck weighs out and leaves, so the next truck can dock while this one is still being weighed. A bay marked maintenance stays out of service regardless
- Order lines, not one flattened line — a multi-line delivery shows every item with its ordered, invoiced and received quantity and a per-line and total difference. Order Details opens on a list of every truck carrying an order, so you no longer have to already know an entry number to see anything
- Custom truck types and delivery types — added per plant under Master Data → Truck Types / Delivery Types, because more than one module will want them. A delivery type carries a direction (loading or unloading), which is what tells the ladder which way to send the truck. Tanker and Non-Tanker are built in and cannot be deleted; a custom type still in use by a truck is refused rather than silently orphaning it
- Gate token print — a 70×50 mm token with a QR code, to a thermal printer or the browser. The QR is generated on the device, so it still prints when the gate has no internet
- Full activity log with before → after values, soft delete, and CSV export throughout
- Access is off for everybody until it is granted. Nobody gains Fleet simply because it was installed — grant it per user in Module Access. Admins (level 1–5) manage the master data; department managers, regular users and Security (level 10) drive the workflow but change nothing behind it
- Standard Checklist — a second way to author a check. Type a numbered list of items into a table instead of drawing a form. Use it when the check is a list; keep the canvas designer for when the digital form has to look like the printed original an auditor already knows. Both write into the same bank, so versions, runs, history, audit and PDF work identically behind either
- The run screen is now the inspection table — S.No · Checklist Items · Answer · Remark, one row per item under its section heading. It exists because these are filled in on a phone at a gate: the old layout spent most of a screen on a single question, and three now fit where one did
- Two new answer types — a plain Yes / No (previously only Yes/No/NA existed), and Instruction, a heading or note that is read rather than answered. An Instruction is never numbered, never scored and never blocks submission
- A Standard / Custom pill wherever a checklist is named — the bank, history, the run header and inside the modules — so you always know which editor owns it
- A checklist is assigned to the modules it belongs to, and every module now carries the same Checklist Configuration screen — Plant Admin and above, since it decides what a module requires — showing the checks that landed there. A check written for the gate is found at the gate instead of hunted for in a list of two hundred. An untagged checklist still appears everywhere — tagging narrows a module's list, it never hides the general checks
- Workflow Checkpoints — where a module has a real workflow, you can now require a check at a step. Fleet exposes nine checkpoints in three phases: Logistic (Arrive, Dock, Weigh In, Weigh Out, Exit), Loading (start, complete) and Unloading (start, complete)
- Rules, not one checklist per step — “when a truck looks like this, require this checklist at these checkpoints”. Leave the condition empty for every truck, or narrow it to a truck type or delivery type, so a tanker can be inspected before unloading without a flatbed being stopped for the same form
- “Completed” and “passed” are separate settings — some plants want the inspection recorded without a failure holding the truck at the barrier
- A truck is never stranded by configuration. A rule pointing at a checklist that was since deleted is skipped with a warning rather than blocking, and a stage the truck has already passed reads “not required — step already passed” instead of staying pending for ever with no button to clear it
- No rules means no gates. A plant that configures nothing behaves exactly as it did before
- Fleet's own survey builder is retired — a truck inspection is an ordinary checklist now. Existing surveys already recorded are still readable in the truck's Info panel
- Checklist Schedules was unreachable from the sidebar and has been merged into Groups & Schedules — renamed from “Assign & Schedule”, because that screen manages people and timing, while assigning a checklist to a module or a workflow step is done on the checklist itself. The old name sent admins to the wrong screen looking for it
- Wide tables were cut off, not scrollable — on a 390px screen the right-hand columns of the Checklists bank, Checklist History, Workflow Checkpoints and Fleet Order Details were simply unreachable, with no gesture that could reach them. On the Checkpoints screen an admin could not tick Exit at all. All four now scroll sideways inside their own box while the page itself still does not
- Canvas checklists broke their own layout on a phone — a form drawn to match a printed A4 original had its columns wrap, so a three-across row became a stack and the design no longer matched the paper. The sheet is now scaled as one picture, keeping every proportion, with − / Fit / + / 100% zoom. Desktop is unchanged
- Checklist history now reads back in the checklist's own layout — a submitted run is shown as the same table or the same drawn form it was filled in on, with the answers printed where the controls were
- The run detail is compact enough to read on a phone rather than one question per screen
- A checklist created by an admin who spans plants could vanish. Company admins, country and state admins and the platform owner have no single plant of their own, so a new checklist or run was saved as “belonging to a plant” while carrying no plant — invisible to every plant user, including the person who had just created it. There is now one tested rule for which plant a row belongs to, and a repair script for anything already saved that way
- Gate-in failed with a server error once a second company used it — truck entry numbers were counted per company but had to be unique across all of them, so the second tenant collided with the first. Numbering is now allocated safely under concurrency
- Weights were stored in the wrong unit — a truck weighed at 18.5 MT was recorded as 18.5 kg, which then poisoned the net weight, the PDF, the CSV and the reports
- Approver and host pickers leaked across tenants — an admin who manages a group of companies rather than one company fell through the scoping and saw every tenant's staff in the picker (24 people where 17 were correct). Fixed, with an automated guard so it cannot come back unnoticed
- Fleet master data was visible to non-Fleet admins — Docking Stations appeared under Master Data for an admin who had never been granted the module
- A truck could be attached to another tenant's gate, and that gate's name then read back through the attacker's own screens. Every write path now validates the gate as well as the plant
- Buttons and table headers could render invisible. The app sets some colours as matched pairs — this background with that text colour — and a module that overrode only one half inherited the other, producing white text on a white fill. It had shipped five times, including a Checklist History header at less than half the contrast an accessibility standard asks for, and a button that turned grey-on-grey under the mouse and beat modules' own selected states while doing it. Hovering now simply darkens whatever colour a button already has, which cannot produce an unreadable combination, and an automated check fails the build if half a pair is overridden again
- Blue Cards → Training — a 64-slide operator and administrator course inside the app, with trainer notes, a contents rail and a presenter mode that puts slides on the projector while notes, the next slide and a timer stay on your own screen. It is one self-contained page, so it runs with the network down
- The sticky filter bar on Quality Walkabout was hidden behind the app header
- Outbound email and the deployment defaults still carried the old “QC Sample Management” / “Quality Works” product naming in places
- Overview refreshed — Fleet Management documented in full, the Checklists page brought up to date with the second builder and Checklist Configuration, and the screen, module, release and endpoint counts recounted from the application (88 screens, 8 modules, 416 endpoints)
- Run on the VPS after pulling, in this order:
add_fleet_module.php, thenadd_fleet_truck_types.php(the second alters a column the first creates), thenadd_checklist_standard_builder.phpandadd_checklist_workflow_gates.php. All are idempotent and additive. Follow withnpm run schema-doctor - Workflow checkpoint rules and the plant truck/delivery type lists need no migration — they are stored in the settings table the platform already has
- Optional data repair for checklists saved without a plant (see above), dry-run by default:
php migrations/repair_orphaned_checklist_plants.php, then--apply
- Observations — findings that need no action — tick "No action required" and log just the place, category, subject, description and a photo. Until now every walkabout had to name an action person and carry a deadline, because the module exists to chase somebody; some things are worth recording but need nobody chased. An observation is complete the moment it is logged, so it never joins anyone's action list, never becomes overdue, and is never counted as a completed corrective action
- MOC severity (60 days) — a fifth tier for changes that cannot be closed inside Minor's 30 days. The due date is calculated as +60 days, exactly as the other tiers calculate 1, 7, 15 and 30
- Date range filter — a From → To calendar before the Refresh button narrows every KPI and chart to the period you pick. One tap plus Apply selects a single day; "All dates" clears it
- Click any chart to drill down — clicking a status, severity, category, location, action person or due-date bucket re-filters the entire page to that value. Filters stack, combine with the date range, and each appears as a chip you can click to remove. Clicking a month on the trend chart narrows to that whole month
- Monthly Trends now shows Closed as well as Raised — closures are counted in the month they actually closed, whenever the finding was first reported, which answers "how much did we clear last month?"
- Six-month charts skipped two months and double-counted two others — the month cursor stepped back from today's date, so on the 31st "minus four months" became 31 April, a date that does not exist and rolls forward to 1 May. The Severity Trend axis read "Mar May May Jul Jul Aug": April and June were missing entirely and the duplicated months were merged into one bar. Months are also now keyed by year, so August of one year no longer merges into August of the next
- "By Observation Location" was always one grey slice — the chart read a field the server has never sent, so every finding fell through to "Unknown". It now shows the real plants
- Status Distribution hid Drafts and Observations — the chart showed only Open and Closed, and its "Open" slice silently also counted Drafts. It now shows one slice per real status
- The Open KPI counted Drafts twice — drafts have their own tile, so they were billed to both, and the card disagreed with the chart beside it. Drafts are also no longer counted as overdue or due-soon, since they are not yet chaseable
- Action Person and Due Date columns printed "null" in the register, history and my-actions tables for any finding without one
- The header now says where you are — the block by your avatar shows your current plant in brackets after the company, e.g. "Henkel South Africa (Alrode)". An admin who spans several plants sees the plant they have selected, or the widest scope they hold — their location, country, state, or "All Plants"
- Run on the VPS after pulling:
add_walkabout_no_action_option.php(observations), thenadd_walkabout_moc_severity.php(MOC tier). Both are idempotent and additive — existing findings are untouched
- Areas & Equipment — a per-plant shop-floor tree (Area → Work Center → Equipment) in Master Data, modelled on ISA-95 and mapped to SAP's Functional Location / Work Center / Equipment objects. One shared answer to "where on the floor did this happen?" for every module
- Checklist runs are stamped with their place — the Run screen now picks Area → Work Center → Equipment instead of free text, so results are tied to real assets and can be analysed by line or machine. Only Area is required, so a check can cover a whole area, one line, or a single machine
- Station Mode — register a shop-floor tablet or panel PC, bind it permanently to a place (plant, area, work center, machine or gate), and choose which app tiles it shows. The operator taps a tile and the check opens with the place already filled in, then returns to the kiosk on submit. Platform-wide, so any module can add a tile to the same station
- Subscriptions — per-company validity dates and user caps: a total cap, caps per admin tier, and optional per-plant caps. Enforced at user creation, reactivation and login, with a renewal banner in the final 15 days. Blank cap = unlimited, so existing companies are unaffected
- Plant-wise licensing — per-plant, per-role user caps for plant-bound roles, so a customer can license each site to the size it actually is
- Company Branding — per-company logo, accent colour and support email, shown to that company's users after login; edited by the Company Admin or the Platform Owner. Off by default
- User avatars — anyone can set their own profile photo from their account dropdown; it is resized in the browser and appears in the header and menu
- Today — the first tab on Gate Passes is everyone expected today, Approved and still-Pending on purpose, so an unapproved arrival at the barrier is visible instead of a surprise
- Muster List — who is inside right now, with host, time in, hours on site and vehicle; anyone over 12 hours flagged overdue. Prints an A4 roll call with a signature column from data already in the page, so it still works during an evacuation with the network down
- Auto check-out — closes visitors who never tapped out, at a per-plant cutoff time (blank = off, and blank is the default). Stamped at the cutoff rather than when the sweep ran, and logged as a system action, so a record never reads as a guard confirming someone left
- Group visits — pick several people in one form and get one ordinary pass each, with its own number, QR, badge, check-in popup and emails; linked only so the party approves in one click and the cards show a group strip. Every downstream step keeps using the single tested path
- Multi-day bookings — an optional Until date creates one pass per person per day (3 people × 5 days = 15 passes), weekends included; capped at 90 days / 200 passes. Emails are consolidated per booking, and each person gets one message carrying a dated QR for every day
- Vehicles — “Coming with a vehicle?” on the pass, with the number normalised to a standard format, shown in pass details, CSV export and the activity log; per-person vehicles within a group
- Activity Log — every change to a visitor or gate pass with before → after values, who and when, including gate actions and auto check-outs
- Blacklist — bar a person with a reason; refused at pass creation and again at check-in
- Installable app (PWA) — SFM can be installed on a phone, tablet or desktop and opens full screen. Icons are now served locally, so a plant on a closed network can still install it
- Visitor edit is ownership-based — the company-wide visitor list stays readable by everyone, but you may only change the visitors you registered (admins and Security may change any). Previously any user could edit anyone's record
- ID numbers are masked for anyone who may not edit that visitor — passport and licence numbers are no longer casual browsing material
- Gate-pass lists are scoped on the server — the “only mine” filter used to be requested by the browser, so History showed every pass in the plant. Ownership is now decided inside the endpoint
- Auto check-out no longer crossed tenants — a company admin has no single plant, so the sweep ran unfiltered and could close visitors at every plant of every company. It now uses the central access filter
- Phone and tablet layout — bottom tab bar, full-width sheets, thumb-sized targets, cards that fit the screen (1 on a phone, 2 on a tablet, 3 on a large landscape tablet). Desktop is unchanged
- Safety training & liquor check are per-visit — recorded by the guard at check-in (Yes/No/NA, Pass/Fail/NA) and shown in Gate Pass Details, rather than being a property of the person
- Module-wise email sender names — notifications now say which module they came from (Visitor Management, Blue Cards, Checklists, Pest Control…), instead of every module looking identical in the inbox
- Rewards & Recognition — an implemented card can be Rewarded with a category, amount, currency and note, giving the submitter visible recognition and closing the improvement loop
- Activity Log — a full audit trail of every create, edit, status change, reward, delete and restore, recording who changed what from what to what
- The module is now called simply Blue Cards everywhere; the "HPS" label has been removed from the UI, emails and printed cards. Plants that had customised their card title keep it — only the default changed
- Delete now archives instead of erasing across companies, countries, states, plants, departments and users. Deleting deactivates: the row and everything under it disappears from lists and pickers and affected users cannot log in, but the history survives and a ♻ button reactivates it
- Signature location lock — a per-plant geofence for checklist signatures, so a check can be permitted, warned or blocked depending on how far the signer is from the place it belongs to
- Renamed to SFM — Shop Floor Management Platform. The product covers the daily running of a plant across quality, operations, people, safety and facilities functions, with modules built per customer use case; the name now reflects that rather than any single focus area
- Training Manual overview refreshed — screen, module, access-level and endpoint counts recounted from the application, the Security role added to the access reference, and every previously undocumented screen written up (My Checklists, Checklist Groups, Schedules, Station Mode, My Blue Cards, Blue Cards Activity Log, Subscriptions, Branding, Settings, Audit Log, Spray Plan, Lizard Plan & Services, Pest Activity Log)
- Visitors master — register a visitor once (photo via webcam or file, mobile, company, ID type, category) and reuse them at any plant across the company; a dedicated Visitors screen to search and edit anyone, with duplicate-mobile detection
- Gate passes — raise a pass for a visitor with host, department, expected date, time-slot (From/To pickers) and gate; unique
UGPN-YYYY-NNNNNNNNnumbers; mobile-first card layout matching the app theme - Approval workflow — every pass requires at least one approver (no auto-approval); pick any user in your location except yourself; statuses Pending → Approved → On-Site → Checked Out (plus Rejected / Denied) with full who-did-what audit and 5 branded email notifications
- Badge printing — 52×88 mm visitor badge with QR; print to a Bluetooth ESC/POS thermal printer (POS button) or the browser
- Gate QR Scanner — a full-screen kiosk page for the gate PC; scan a visitor's QR to check them in or out automatically, with live on-screen confirmation
- RFID hardware bridge — one-file installer (Mac & Windows, double-click) that connects an ACR122U card reader; tap a card to auto check-in / check-out, or write a pass number onto a card from the pass; live Bridge + Reader connectivity status
- Data Visualization (admin) — KPIs plus visits-per-day, status, category and peak-hour charts on one page
- Gates master data — manage gates per plant (Entry / Exit / Entry+Exit) under Master Data → Gates; CSV export & import of visitors and passes
- Security role (access level 10) — for gate staff; sees Register / Visitors / Gate Passes / History / QR Scanner and performs check-in/out and card writing
- Location scoping — a Security user (or plant user) assigned to a Location works across all plants in that location; approver and host lists show every user whose plant is in the location
- Per-role screens — admins see everything; normal users see only passes they raised or must approve; QR Scanner is admin + Security, while Data Visualization, Download and RFID Config are admin-only
- Minimum-stay protection — a configurable minimum stay (default 3 min) prevents accidental instant check-out right after check-in, on card tap, QR scan and button
- User Mobile Number — an optional mobile field (with country-code picker) on Add/Edit User; auto-fills the Host Phone on gate passes
- New users start with NO module access — admins grant each module explicitly (was defaulting to full edit on everything)
- Visitor Management is now selectable in Module Access Permissions and saves correctly
- Badge print no longer overlaps the name onto the QR or cuts off the bottom text; the layout uses the full label with even spacing; hardened Bluetooth transfer against "GATT operation failed"
- History page redesigned to match Gate Passes, with a single green from-to date-range calendar instead of two large date fields
- Schedules — set a checklist to run automatically on a recurrence (daily, weekly, fortnightly, monthly, quarterly, annually) with a day picker and due time; a scheduler sets it up once and the system creates the runs every period
- Subject labels — one schedule fans out into multiple runs (e.g. "Machine 1"…"Machine 10"), so a single 8 AM schedule produces one check per machine each morning
- Groups — per-plant named sets of users (e.g. "Line 1 Operators") as reusable assignment targets; a schedule can target any mix of Groups and individual users
- Schedulers — designate per-plant which users may create/edit schedules, on the Configuration page (like Blue Card Coordinators)
- My Checklists board — every recipient sees their due runs and claims one to fill it; the claim is first-come-first-served, so two operators can't take the same run
- Supervisor status board — per-schedule, per-day completion view (done / in-progress / pending / overdue) with who did each
- Recipients are emailed their assigned runs automatically when the daily job materialises them
- Contract Users — a per-plant roster of name-only submitters (people without a system account), managed on a new Settings tab; their names appear in the card Name suggestions and get full history & analytics like any user
- Name must be registered — the submitter Name must match a registered User or Contract User; an unknown name pops up a prompt to add them first (no more free-typed, inconsistent names)
- Zone → Working Place linked dropdowns — pick-only lists; choosing a zone shows only that zone's working places, and auto-selects when there is just one
- All fields required (except Number) — Zone, Working Place, Date, at least one 4C category, Problem and Suggested Solution must be filled before a card can be submitted
- Trash & Restore — deleting a card now archives it (soft delete) instead of erasing it; deleted cards are recoverable from a Trash view — no data loss
- Excel export from the Admin view — filtered by plant, with a formatted, colour-coded workbook (title block, filters, frozen header, per-status colours, a summary sheet)
- Universal search across all Blue Card views — search by card number, name, number, zone, working place, status, problem, reward — any keyword
- Dashboard boards — Contributors and Zone leaderboards now scroll (top rows visible, rest on scroll) plus a new "Working places by zone" breakdown
- Blue Card creation emails now share one consistent Blue-Card look; automatic emails to plant Coordinators were removed (coordinators are configured per-plant on the Configuration page)
- Fixed the 4C category checkboxes in Blue Card emails — checked boxes now render visibly and aligned even in clients that strip background colours
- Logins survive redeploys — sessions are now persisted to disk instead of memory, so updating the app no longer logs everyone out
- Hardened the scheduling engine — plant-level access isolation, atomic (no-duplicate) run creation, and safe date handling
- New Checklists module — a configurable template builder for any inspection or audit: organise questions into sections with 8 response types (Yes/No/NA, OK/Not OK/NA, Pass/Fail, Text, Number, Date, Dropdown, Photo)
- Per-question rules — mark any question mandatory, require a photo, require a remark, and set a criticality level that determines whether it fails the run
- Publishing a template snapshots an immutable version — later template edits never retroactively change a run that already executed against a published version
- One universal, mobile-friendly run screen — pick an available checklist, work through sections, attach photo evidence, and submit
- Automatic pass/fail — the rules engine validates every answer as it's entered; any single failed question fails the overall run
- Checklist Runs dashboard with template/status/date filters, full answer + photo review, and clean A4 PDF export via QCPdfEngine
- Plant-isolated by default, with optional company-standard templates shared across all plants; granted via the new "checklists" module permission
- Checklist photo evidence accepts image files only, is stored privately (outside the public web root), and is served exclusively through an authenticated, access-checked route
- Full multi-tenant and plant isolation applied to templates, versions, runs, responses, and attachments — no cross-plant or cross-company data exposure
- All checklist-entered text (questions, remarks, dropdown options) is rendered stored-XSS-safe throughout the module
- New Locations in Master Data — group several plants within one state into a named Location (e.g. "North Cluster"), with a plant checklist to pick which plants belong to it
- New Location Admin (Multi-plant) access level — assign one admin to a Location and they manage all of its plants together with a single login, instead of needing a separate account per plant
- A Location Admin sees the merged data of every plant in their Location (samples, calibration, pest control, blue cards, walkabouts) and nothing outside it; adding or removing a plant from the Location updates their access on next login
- Company/State are set automatically from the chosen Location during user creation — no need to fill the hierarchy fields for a Location Admin
- Closed a cross-scope data leak: State Admin and Country Admin now correctly see only the plants in their state/country. Previously some screens (Samples, Walkabouts, Racks, Departments) fell back to showing the whole company's data
- HTML-escaped all admin-entered names in the Locations screen to prevent stored script injection
- Shop-floor improvement-suggestion system — anyone can raise a Blue Card describing a problem and suggested solution, tagged to a Zone and Working Place
- Five-stage lifecycle — Open → Acknowledged → In Progress → Implemented, with Reject available at any stage; each transition records the acting user
- Kiosk-style entry screen that resets after each submission for shared shop-floor use; every card gets a unique permanent card number
- Admin View board to acknowledge, add action plans, close with a note, log savings, or reject cards
- Analytics dashboards — totals by status, cards by zone and working place, implementation rate, and cumulative savings
- Per-plant Settings — manage Zones and Working Places, and customise the printed card's title, subtitle, notice line, and size
- Fully plant-isolated — cards, zones, working places, and settings are scoped per plant; granted via the new "blue_cards" module permission
- New users are automatically emailed a branded welcome message with a login link — credentials no longer need to be shared by hand
- Password is now optional on create; if left blank the system generates a strong temporary password (ambiguous characters removed for easy typing)
- GDPR-oriented audit trail — records logins, failed logins, logouts, and user create/edit/delete with IP address and device
- Admin-only Audit Log screen (Administration → Audit Log) with event/date/email filters and CSV export; Company Admins see only their own company
- Configurable retention — entries auto-purge after AUDIT_LOG_RETENTION_DAYS (default 365) to satisfy storage-limitation requirements
- Model Number field — new optional free-text field on the add form, edit modal, history table, Excel export, bulk upload, and PDF export
- Equipment ID label — renamed from "Equipment Serial Number (Unique)*" to "Equipment ID*" across the form and all related UI
- "Under Calibration" equipment status (🔵) — third status option alongside "Not in Use" and "Gone for Calibration"; includes count tracking, blue row highlight, and legend modal entries in both Equipment History and Calibration Logs sections
- Automated daily caution alerts — server sends an email to the last person who updated each equipment's calibration when the next calibration date falls within 16–30 days
- One email per calibration cycle — dedup table with unique constraint on (equipmentID, nextCalibrationDate) guarantees no duplicate emails; resets automatically when equipment is recalibrated
- Batched per recipient — if a user is responsible for multiple caution-stage devices, all are listed in a single email
- Email includes Equipment ID, Model Number, Name, Used For, Plant, Last Calibration Date, Due Date, and Days Remaining
- Skips equipment with "Not in Use", "Gone for Calibration", or "Under Calibration" status
- HTML-escaped all DB-sourced field values in email templates — prevents stored HTML injection across recipient inboxes
- Slideshow carousel on all 4 analytics sections — auto-advances through KPI and chart cards
- Timer selector — choose 5s / 10s / 15s / 30s auto-refresh interval on main Pest Control page
- Monthly Pest Count chart — stacked bar by species (HF, YW, Mo, M, FF, RC, CB, MR) for current year
- MOM % Reduction chart with fullscreen zoom button
- Data Visualization tab in Reports — Monthly Count and MOM charts in one view
- Corner triangle info tooltips on all 4 KPI cards with data source and update instructions
- Year and Target % Drop filters in Pest Control Reports
- Sub-stats on KPI cards — breakdowns by zone and species
- Annual Pest Count bulk targets — import/export via Excel, month and owner dropdowns
- Pest Control Documents — versioned PDF upload per device with full upload history and download links
- Pest Control Team — own sidebar section; user picker auto-fills name, email, department, and function from registered plant users
- Activate / Deactivate button for pest control devices; inactive devices shown faded
- RBC / RBG filter in Device Master to separate Rodent Bait and Rodent Glue devices
- Pest Master (renamed from Chemical Master) — chemical/treatment master list with auto-fill dosage
- Pest Control Activity Log — full audit trail of all pest control actions per plant
- MOM spreadsheet view — inline editable Minutes of Meeting with row-level add/delete
- Edit and Delete on Meeting History table; Special meeting type added
- Pest Meetings redesigned as single-page layout — no tab switching required
- WQA Category feature — plant-scoped category management with WQA Admin section
- Subject field on QWA observations
- Severity dropdown with auto due date calculation (Critical → 7 days, Major → 15 days, Minor → 30 days)
- Admin edit modal with audit trail — records who changed what and when
- Closed By shown in walkabout closure email
- Action Person dropdown filtered to walkabout-module-enabled users only
- Walkabout Analytics expanded — Severity, Category, Workload, and Trend charts added
- Dudo — AI chatbot in sidebar; answers questions about samples, calibration, walkabouts, and pest control
- Returns live charts and data tables from the database
- Respects module access permissions — users only see data from their permitted modules
- Tenant Group Admin (TGA) role — multi-company scoped access; manage a defined group of companies
- Company Admin (Level 2) now has full admin section access with company-level data isolation
- Workflow Diagram page in admin section — interactive system architecture visualization
- Know More presentation page in admin section — feature overview and demo content
- Training Manual (Overview section) rebuilt — 8 tabs covering all 40 screens, access levels, and step-by-step usage
- QCPdfEngine — all PDF exports redesigned with clean A4 layout, consistent headers/footers
- Gzip compression — faster load times across all API responses and static files
- Section restore on page refresh — browser remembers last visited section
- Deployment overlay — app shows "Deploying…" when it detects a server restart mid-session
- Security hardening — auth checks, company isolation, and SSRF prevention across all endpoints
- handleFileSelect name conflict — calibration and bulk-upload shared the same global function; renamed to handleBulkFileSelect
- MOM edit-mode SyntaxError — idArg computed before display-mode branch
- checkModuleAccess — parseInt() required for access_level string comparison
- Overview flash on page refresh — removed duplicate DOMContentLoaded handlers
- Pest Control Team delete — confirm dialog now appears before delete, not after
- Full Quality Walkabout module: Draft → Open → Closed lifecycle workflow
- UID auto-generation with plant prefix (e.g.
0150-001) - CAPA details field with inline editing by action person
- Repeat observation flag linking to previous closed walkabout for trend analysis
- Attachment upload (image/PDF) on walkabout detail screen
- Comments thread on each walkabout observation
- Reopen closed observations with reopen counter badge tracking
- Walkabout history view with colour-coded due date alerts (Overdue / Critical / Warning / Safe)
- My Walkabout Actions section for personal to-do list per user
- Export walkabout history to CSV and PDF (QCPdfEngine A4 layout)
- Email notifications: submitted (To: action person, CC: reporter + coordinators), reopened, closed
- 20-per-page pagination on all three walkabout tables (Register, History, My Actions)
- New access level 9 "Plant Coordinator" — plant-scoped data access
- Level 9 users can close Quality Walkabout observations for their plant
- Plant Coordinators auto-CC'd on walkabout submitted and reopened emails
- Warning shown in walkabout form when a Level 9 user is selected as Action Person
- Level 9 added to all Access Level dropdowns (Add User, Edit User, User Roles)
- Plant Coordinator role auto-seeded in
rolestable on server startup
- Five device sections: Insect Internal, Insect External, Rodent Bait (Outer), Rodent Glue (Inner), Spider Pad
- Dual-period insect killer readings (1st / 2nd fortnight)
- Species count tracking: HF, YW, Mo, M, FF, RC, CB, MR
- Rodent status ENUM: B, R, O, D, NA, EB, M, S, G
- Spider pad monthly B/O/NA status per pad
- Pest control access filter scoped by plant
- Application renamed from "QC Sample & Equipment's Calibration Management System" to "Quality Works" — since rebranded to SFM
- User Roles section moved from Master Data to User Management (shown before Add New User)
- Action-persons API now returns access_level to support frontend warning logic
- Access level 9 was filtered out by ≤8 guard in dynamic dropdown loops — fixed to ≤9
- Plant dropdown in coordinator modal showed "undefined" — corrected field names
- Walkabout action-persons dropdown used innerHTML for reset — replaced with safe DOM methods
- OIDC SSO Support: Enterprise Single Sign-On with Okta (extensible to Azure AD, Google)
- Tenant Detection: Automatic tenant identification via email domain
- Redis Session Storage: Persistent sessions that survive server restarts
- Tenant Isolation Middleware: Enforces data access boundaries between companies
- Development SSO Mock: Test SSO flows without IdP connection (
/auth/dev-login) - New table:
tenant_auth_config— stores OIDC settings per company - New table:
external_identities— maps SSO identities to local users auth_typecolumn added to users table (local/oidc/saml); password nullable for SSO users- Session middleware now supports Redis with in-memory fallback
- Login page detects SSO domains and redirects automatically
- Fixed QRCode.toDataURL error in label printing
- Fixed modal event listeners for equipment calibration updates
- Fixed Update button not responding to clicks on equipment records
- Made global functions globally accessible (loadEquipmentHistory, updateEquipmentDueDate)
- Fixed Edit button click detection on equipment history table
- Database connection pool timeout issues resolved
- Comprehensive debugging system with console logging
- Success notifications for equipment updates
- Optimized QR code generation using constructor pattern
- Refactored modal event listeners for reliability
- Input focus issues on mobile devices
- Form field placeholder text visibility
- Cascading dropdown population on page load
- Sample search functionality with pagination
- Mobile-responsive sidebar navigation
- User dropdown menu in header
- Equipment calibration alert notifications
- Batch expiry colour-coded status indicators
- Improved CSS media queries for mobile support
- Enhanced table responsiveness on smaller screens
- Equipment Calibration History feature
- QR code label printing (Normal A4 + POS thermal printer)
- Equipment due date update functionality
- Calibration status alerts (Overdue / Critical / Warning / Caution / Safe)
- Equipment notification system for approaching due dates
- Customizable label dimensions (width, height, QR size)
- Batch expiry tracking with alerts
- Sample transfer between bins
- User management role assignment
- Master data cascading dropdowns
- Improved dashboard layout and KPI cards
- Enhanced data visualization charts
- v1.0.0: Initial release — sample management core, storage configuration, user auth, dashboard with KPI cards, data visualization, batch expiry monitoring, responsive design
- v1.0.1: Login page validation, session management, Remember Me, password reset link
- v1.0.2: Sample transaction logging (take-out/return), transaction history with filters, batch numbering system
- v1.0.3: Master data management (Companies, Countries, States, Plants), department management, role management
- v1.0.4: User change password, role-based access control, admin user management panel
- v1.0.5: Batch expiry history tracking, sample storage location hierarchy
- v1.0.1–v1.0.5: Cascading dropdown fixes, bin occupancy calculation, database connection pooling, improved error messages
| Company Name | Actions |
|---|
| Company | Country | Time zone | Actions |
|---|
| Company | Country | State | Time zone | Actions |
|---|
| Company | Country | State | Plant Code | Plant Name | Actions |
|---|
Group several plants within one state into a Location, then assign a Location Admin (in User Management) to manage all of them together.
| Location | State | Plants | Actions |
|---|
| Plant | Zone Name | Code | Description | Actions |
|---|
| Plant | Zone | Working Place | Code | Actions |
|---|
| Plant | Gate Name | Code | Type | Status | Actions |
|---|
Per-plant list. Used by Fleet gate-in and by Checklist Configuration, and available to any other module that needs it.
| Truck Type | Code | Source | Actions |
|---|
What a visit is for. Direction tells the workflow which way the truck goes — a goods receipt is unloaded, a dispatch is loaded — so a new delivery type reaches the status ladder knowing what it means.
| Delivery Type | Code | Direction | Source | Actions |
|---|
| Plant | Gate | Station Name | Code | Status | Actions |
|---|
| Company | Country | State | Plant Code | Plant Name | Department | Actions |
|---|
| Level (1 = highest) | Grade | Actions |
|---|
| Plant Code | Plant Name | Legal Name | City | Tax Number | Actions |
|---|
| Plant | Area | Code | Status | Actions |
|---|
| Plant | Area | Work Center | Code | Status | Actions |
|---|
| Plant | Area | Work Center | Equipment | Asset ID | Status | Actions |
|---|
A station is one device (tablet/PC) fixed at a place — a line, a machine or a gate. Open station.html on that device once and choose its station; it then shows only the work for that place.
| Plant | Station | Code | Located at | Apps | Status | Actions |
|---|
You issue a temporary PIN. The person must change it the first time they sign on at a station, so from that moment nobody else knows it — that is what makes their work attributable to them.
| Name | ID Number | Plant | Department | PIN | Status | Actions |
|---|
- ✗ 8 characters
- ✗ 1 uppercase letter
- ✗ 1 lowercase letter
- ✗ 1 number
- ✗ 1 special character
| Module | No Access | View Only | Full Edit |
|---|
| User | Company | Plant/Location | Department | Access / Role | Grade | Reporting Manager | Created | Actions |
|---|
| Role Name | Access Level | Description | Actions |
|---|
- Host
- —
- Port
- —
- Secure (SSL)
- —
- Username
- —
- From Address
- —
For IT, security and compliance teams
SFM — one secure platform for plant quality, safety and gate operations
SFM is a multi-tenant web platform from STARENGTS that runs a manufacturing site’s quality, safety and gate workflows in one place — samples, calibration, walkabouts, pest control, checklists, Blue Cards, visitors and trucks. This page is written for the IT team approving it: how tenants are isolated, how people sign in, what is logged, how data is backed up and restored, and what we need from you to go live.
At a glance
Tenant isolation on the server
IsolationEvery query is scoped to the caller’s company and plant by central helpers on the server. A browser cannot widen its own view; a request for another tenant’s record simply finds nothing.
Your identity provider
SSOSign in with your own OpenID Connect provider — Okta, Microsoft Entra ID (Azure AD) or Google Workspace — configured per company, with local accounts available as a fallback you control.
Least privilege by default
AccessTen access levels from Platform Owner to Security guard, and module access that is deny-by-default: a new module reaches nobody until an administrator grants it.
A complete audit trail
AuditLogins, failed logins, logouts and every account change are recorded with actor, IP and device. Modules keep their own before-and-after activity logs.
Backups that are proven
ContinuityHourly and nightly database copies, encrypted with AES-256-GCM. A built-in Check restores any copy into a throwaway database and counts the rows — a backup nobody has restored is only a guess.
Quality gates on every release
ReleaseNothing ships unless automated checks pass: unit tests, cross-site-scripting, data-exposure and tenant-scope scanners, a dependency audit and design-consistency checks.
Capabilities
QC Samples
QualityBatch registration, storage locations (plant, rack, bin), check-in and check-out history, expiry alerts and thermal label printing.
Equipment Calibration
QualityCalibration register with schedules, PDF certificates, status history and due-date tracking.
Quality Walkabout
QualityFindings with photos, a five-tier severity ladder that sets the due date, observations, action tracking and analytics.
Checklists
OperationsA standard table builder and a canvas designer for forms that match paper originals, scheduling, assignment, version history, PDF output and workflow gates.
Blue Cards
SafetyHazard and improvement reporting with coordinators, rewards and recognition, MOC discussions and a full activity log.
Pest Control
SafetyDevice registers, readings, rodent and fly-catcher checks, spray and lizard plans, chemicals and meeting minutes.
Visitor Management
SecurityGate passes with QR codes and approvals, group and multi-day visits, RFID check-in, badge printing, a live muster list and automatic check-out.
Fleet Management
LogisticsTruck gate-in, docking, weighing, loading and unloading through gate-out, on a server-enforced status ladder with checklist gates.
Station Mode
OperationsA locked-down kiosk for a shop-floor device bound to one place, launching the checks that belong there.
Master Data
PlatformThe shared hierarchy every module reads: company, country, state, location, plant, department, areas, work centers, equipment, gates and docks.
Administration
PlatformUsers and roles, SSO, two-factor sign-in, branding, subscriptions, audit log, backups and email configuration.
Access control
| Level | Role | Reach |
|---|---|---|
| 1 | Platform Owner | The STARENGTS operator. Entering a customer company is recorded in the audit log. |
| 2 | Company Admin / Group Company Admin | One company, or a chosen group of companies |
| 3 | Country Admin | All plants in a country |
| 4 | State Admin / Location Admin | A state, or a hand-picked group of plants |
| 5 | Plant Admin | One plant, including its configuration |
| 6 | Department Manager | One department |
| 7 | Regular User | The screens granted to them |
| 8 | Viewer | Read-only |
| 9 | Plant Coordinator | Closes walkabout findings for their plant |
| 10 | Security | Gate check-in and check-out |
Deny-by-default modules
Every module is granted per user as No access, View only or Full edit. A module added in a future release reaches nobody until it is granted.
Plant-wise licensing
Each company holds a validity window and user caps, allocated per plant and per role, enforced when a user is created and when they sign in.
Security & compliance
| Area | Control |
|---|---|
| Passwords | Stored only as bcrypt hashes. Passwords are never logged or returned by any interface. |
| Single sign-on | OpenID Connect per company with state and nonce validation. SSO users are never asked for a second factor — your provider handles MFA. |
| Two-factor sign-in | Email one-time codes for administrators (levels 1–5), switched on per company, with trusted devices for 30 days. |
| Sessions | A fresh session identifier is issued at every sign-in to prevent session fixation; sessions are held in a Redis store. |
| Transport & headers | HTTPS with HSTS, clickjacking protection (frame-ancestors), nosniff and a strict referrer policy. |
| Errors | Internal failures return a reference number, never database queries or values. |
| Audit log | Logins, failed logins, logouts and account changes with actor, IP and device, kept 365 days by default and exportable to CSV. |
| Module activity | Blue Cards, Visitors, Fleet and Pest Control keep their own before-and-after change history. |
| Deletion | Companies, plants, departments and users are deactivated rather than erased, so history stays intact and access can be restored. |
Data protection & continuity
| Tier | Contents | Default schedule | Default retention |
|---|---|---|---|
| Business data | All records except uploaded documents | Every hour | 48 hours |
| Full copy | The whole database, including documents | Nightly | 14 days |
Encrypted at rest
Backup files are encrypted with AES-256-GCM using a key held outside the application, with a random salt per file.
Restore you can prove
Any backup can be restored into a throwaway database from the Backups screen; the result shows tables and rows restored, then the copy is deleted.
Failures are reported
Server errors can raise an email alert, throttled so one fault cannot flood a mailbox, and carrying a reference — never data.
Technical architecture
| Layer | Technology |
|---|---|
| Runtime | Node.js 22 LTS in a Docker container (Alpine) |
| Application | Express 4, server-rendered API with role- and tenant-scoped endpoints |
| Database | MariaDB with connection pooling; schema created and upgraded automatically at start-up |
| Sessions | Redis |
| User interface | Browser-based, responsive for phones, tablets and wall displays, on one shared design system |
| Documents | PDF certificates and photos stored in the database, so a database restore brings them back |
| Devices | Thermal label and badge printing, camera QR scanning and PC/SC RFID readers via a local bridge |
What we need from your IT team to go live
| Item | Why |
|---|---|
| Allow the SFM web address | Browsers on your network must reach the application over HTTPS |
| An OIDC app registration (optional) | For single sign-on: issuer URL, client ID and secret, and our callback address |
| Allow email from the SFM sender | Notifications, password emails and two-factor codes |
| Allow pop-ups for the SFM address | Printing and PDF export open in a new window |
| Camera permission on gate devices | QR check-in at the gate kiosk |
| A gate PC for RFID (optional) | Runs the small bridge that reads visitor cards |
Operations
Tested before it ships
Every release runs the full gate: unit tests, security scanners, dependency audit and design checks. A failing check blocks the release.
Upgrades without data loss
Database changes are additive and applied automatically at start-up, so an upgrade never needs a manual database step or downtime window.
Dependencies kept current
Libraries are upgraded and re-audited; at the last upgrade the dependency audit reported zero known vulnerabilities.
SFM 1.12.0 · STARENGTS · Generated · For the internal use of the customer’s IT and security teams.
Label Preview (100mm × 40mm)
| When | Action | Batch | Product | By | Details |
|---|
| Status | Equipment ID | Model Number | Equipment Name | Equipment used for | Location | Verification Method | Certification | Last Calibration | Interval (Days) | Next Calibration | Alert Status | Action |
|---|
| Status | Equipment ID | Equipment Name | Old Next Calibration Date | New Next Calibration Date | Updated On | Updated By |
|---|
| Status | Batch Number | Product Name | Mfg Date | Expiry | Entered By | Storage | Created On | Actions |
|---|
| Status | Batch Number | Product Name | Taken Out | Taken Out By | Returned | Returned By | Time Out |
|---|
| Status | Batch Number | Product Name | Original Expiry | New Expiry | Changed By | Changed On | Reason |
|---|
| Status | Batch Number | Product Name | Taken Out | Taken Out By | Returned | Returned By | Time Out |
|---|
📊 Sampling Management Analytics
Sample tracking, expiry analysis, and storage utilization insights
Expiry Status Distribution
Top 10 Products by Sample Count
Storage Location Utilization
Sample Transaction Status
Sample Age Distribution
🔧 Equipment Calibration Analytics
Calibration status, overdue tracking, and equipment compliance insights
Calibration Status Overview
Equipment Status
Calibration Frequency Distribution
Monthly Calibration Trends
📋 Quality Walkabout Analytics
Walkabout status, action tracking, and quality observation insights
Status Distribution
Due Date Status
By Observation Location
Monthly Trends — Raised vs Closed
Severity Breakdown
By Category (Open)
Action Person Workload
Severity Trend (6 months)
🦟 Pest Control Analytics
Pest activity trends, device monitoring, and treatment effectiveness insights
Device Status Distribution
Pest Activity by Location
Treatment Effectiveness
📊 Deep Dive Analytics
Device Type Distribution
Pest Types Detected
Weekly Activity Pattern
Inspection Compliance Rate
📈 Performance Metrics
Activity Severity Index
Top Risk Areas
Device Monitoring Activity
📊 Monthly Pest Count Comparison
Monthly Pest Count 2025-26
MOM % Reduction vs Previous Year
--- Target 2% reduction
🕐 Pest Control Activity Log
Complete audit trail of all pest control actions — devices, readings, spray, meetings, and MOM action items.
| Time | Category | Action | By | Details |
|---|---|---|---|---|
| Loading... | ||||
Users by plant
Users by module
Users by role
Plant × module — users who can open each module
Where the users are
🎛️ Admin Dashboard - Master Data Analytics
System-wide overview of plants, storage capacity, and user management
📊 Sampling Management Analytics
Expiry Status Distribution
Top 10 Products by Sample Count
Storage Location Utilization
Sample Transaction Status
Sample Age Distribution
🔧 Equipment Calibration Analytics
Calibration Status Overview
Equipment Status
Calibration Frequency Distribution
Monthly Calibration Trends
📋 Quality Walkabout Analytics
Status Distribution
Due Date Status
By Observation Location
💾 Master Data Analytics
Storage Capacity by Plant
Bin Occupancy Rate
Products by Category
User Role Distribution
Auto-calculated: +30 days
| UID | Raised | Location | Category | Subject | Action Person | Due Date | Status | Actions |
|---|
| UID | Raised | Location | Category | Subject | Action Person | Due Date | Status | Closed | Actions |
|---|
| UID | Date Raised | Reporter | Location | Category | Subject | Description | Due Date | Status | Actions |
|---|
| Time | Walkabout UID | Activity | By | Prev Status | Current Status | Details |
|---|
👥 Pest Control Team
| Name | Department | Function | Actions | |
|---|---|---|---|---|
| Loading... | ||||
Pest Control Master Plan
| S.No | Activities | Owner | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading annual plan... | |||||||||||||||
Pest Control Layout
🗺️ Pest Control Device Layout
No layout image uploaded. Click "Upload Layout" to add one.
📋 Layout Revision Control
Track changes and updates to the pest control layout map
| Rev No | Date | Reason of Review | Actions |
|---|---|---|---|
| Loading revision history... | |||
Pest Control Device Master
0 Active | 0 Inactive | 0 Maintenance| Device ID | Type | Location | Area | Placement | Status | Actions |
|---|---|---|---|---|---|---|
| Loading... | ||||||
🧪 Pest Master
➕ Add New Chemical
Pest Chemical List
| # | Chemical Name | Default Dosage | Category | Status | Added By | Actions |
|---|---|---|---|---|---|---|
| Loading... | ||||||
Pest Control Readings Entry
Flycatcher - Internal
Click count cell to enter species-wise breakdown
| Device ID | Location | Area | 1st Fortnight (1-15) | 2nd Fortnight (16-31) | ||
|---|---|---|---|---|---|---|
| Count | Remarks | Count | Remarks | |||
| Select month, then click Load Data | ||||||
Spray Tracking Plan
| S.No | Activity | Owner | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading spray plan... | |||||||||||||||
Pest Control Spray Tracking
💨 Log Spray Activity
Spray History
| Date | Type | Spray Type | Chemical | Done By | Verified By | Areas | Actions |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
🦎 Lizard Management Plan
| S.No | Activity | Owner | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading lizard plan... | |||||||||||||||
🦎 Lizard Management Service
Service History
| Date | Type | Chemical | Service By | Verified By | Next Service |
|---|---|---|---|---|---|
| Loading... | |||||
Pest Control Documents
| Document Name | Category | Current Ver. | File | Uploaded By | Uploaded At | Expiry Date | Actions | |
|---|---|---|---|---|---|---|---|---|
| Loading... | ||||||||
Pest Control Meetings
📋 Meeting History
| Date | Type | Title | Created By | Actions |
|---|---|---|---|---|
| Loading... | ||||
📊 MOM Action Items
| # | B. Date | C. Observation / Recommendation | D. Root Cause | E. Device / Area | F. Action Decided | G. Responsibility | H. Target Date | I. Completion Date | J. Revised Target | K. Repeated | L. Status | M. Verified On | N. Verified By | O. Remark | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading action items... | |||||||||||||||
Pest Control Reports
Flycatcher Tracking - Internal
Monthly insect count data by device (internal). Green = Low (0-5), Yellow = Medium (6-10), Red = High (>10)
Loading heatmap data...
📋 Custom Report Generator
Report Preview
Select report type and parameters, then click Generate Report
Blue Cards
0My Blue Cards
0Admin View
0🟦 Blue Cards — Data Visualization
Submission momentum, lifecycle health, savings impact and recognition insights
Blue Cards Settings
| Name | Category | Modules | Scope | Status | Version | Modified | Actions |
|---|
| Procedure | Where | Who | When | Due | Progress | Sign-off | Result | Status |
|---|