I am not liable for any broken screens as a result of waiting...

H&S Portal

Health & Safety Web App / Node.js / Bootstrap 5

About

The H&S Portal is a web app I built at work to bring the company's health and safety paperwork into one place. It covers COSHH assessments, risk assessments, the COSHH inventory, equipment and facilities inspection trackers, induction packs, the H&S committee, visitor sign-in and fire roll calls, across several companies and sites. Staff sign in to manage the records, while contractors and visitors use the public sign-in page from their phones, and anyone can view the records marked as public.

Every record is versioned and prints to a clean PDF, and PDFs of public records carry a QR code so anyone holding a printout can check it is still the current version. Branding and company details have been blurred in the screenshots on this page.

Challenge

Assessments, inspection dates and visitor sign-in sheets were spread across documents, spreadsheets and paper at each site, which made it hard to see what was due for review, which version was current, or who was on site during an evacuation.

Solution

I built a self-hosted portal in Node.js with no npm packages, so there is nothing to audit or keep patched beyond Node.js itself. Data is stored as JSON files with daily backups, staff sign in with their Microsoft work accounts, and access is set per tool and per site.

Features

COSHH & Risk Assessments

Versioned assessments with hazard and PPE pictograms, safety data sheets and further actions, each printed to a PDF that can be checked against the live record with its QR code.

Inspection Trackers

Equipment and facilities trackers for LOLER, servicing and calibration. Due dates are worked out from the last inspection, and anything overdue or due soon shows on the home page.

Visitor Sign-In

Contractors and visitors scan a QR poster at the site, agree to the site rules, sign with their finger and upload RAMS documents, all from their phone with no account needed.

Fire Roll Call

Fire wardens tick off everyone signed in at the site from their phones during an evacuation. Every warden sees the same roll call, updated every few seconds, and it is saved as a PDF afterwards.

Induction Packs

Print a sign-off sheet for a new starter listing the assessments they need to read, with saved packs for each job role that always pull in the latest versions.

My Tasks & Reminders

Committee actions, walk-around areas and inspections are assigned to people, shown under My Tasks and sent in a weekly email through Microsoft 365.

Microsoft Sign-In

Staff sign in with their work accounts through Microsoft Entra ID, or with a password and an authenticator app, which is required for administrators.

Access & Audit Log

No access, View or Edit for each tool and each site, so people only see the records for the companies and sites they work at. Every change is recorded in the audit log.

Backups & Maintenance

Daily zipped backups with one-click restore, a maintenance mode, and a page that checks every bundled library for new versions once a day.

Gallery

Results

The portal replaced the separate documents, spreadsheets and paper sign-in sheets with one site that shows what is due, who is responsible and who is on site.

Building it for real users taught me that the hard parts were not the forms but the rules around them: making sure people only ever see the sites they work at, that a printout can always be traced back to the right version, and that a roll call still works on a phone in a car park.

20,000+

Lines of JavaScript

0

npm Packages

8

Tools in One Portal

Figures from the project's source code as of October 2026.

Status

In Use & Active Development
Top