TrainoraSelf-Hosted Training Matrix: Competencies, Expiry, Evidence
Self-hosted training matrix: who has what, what has run out, and what runs out next — every expiry computed from the date it was achieved, never stored.
No sign-up, no password — the demo opens already signed in, on sample data.
- Full PHP source included
- Instant download + licence key
- It never phones home
- Compare vs SaaS pricing →
The problem it solves
Training records go stale in a way that is invisible until an auditor asks. The spreadsheet says "food hygiene — yes", and the certificate behind it expired fourteen months ago.
What you need is not a learning platform. It is one grid: everyone down the side, every competency across the top, and an honest colour in each cell.
- A spreadsheet where "has it" and "still valid" are the same column
- Renewal dates that live in someone's calendar, or nobody's
- An LMS priced per learner per month, bought to record training you deliver in a room
What you get
Everyone down the side, every competency across the top, each cell coloured valid / expiring / expired / never recorded — and hatched where a competency simply does not apply to that person. Click a cell to record a completion without leaving the grid.
You set how long a competency stays valid; the expiry comes from the date it was achieved. Nothing stores an is-expired flag that could go stale between the cron that should have run and the screen somebody is looking at.
A competency with no record is not the same as one that lapsed, and it is not the same as one that does not apply. Three different colours, because an auditor asks three different questions.
The certificate attaches to the completion it evidences. PDF or image, sniffed by magic bytes and re-checked by the controller that serves it.
Run a session for a group, mark who attended, and every attendee gets their record — rather than typing the same completion fifteen times.
A digest of what is expiring, and a read-only .ics URL so the expiries appear in Outlook, Google Calendar or Apple Calendar and keep themselves current.
People, competencies, records, sessions — the vocabulary is the product own, and the same engine ships as Inspectora for assets. One code path, two domains, so the logic is the one that has been proved twice.
The 3.1 wave gave the catalogue a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Every outbound path ships switched off, runs on your own credentials, and can never break the thing that triggered it. This app gained no new outbound path in 3.1 — its pass rewrote the honest-limitations list against the shipped code instead, which is the more useful change when the product was already complete.
See it running — right now, on sample data
No sign-up, no password — it opens already signed in, and resets itself. Click around freely.
Open the live demoIs Trainora right for you?
Before the price, not after it: what Trainora deliberately does not do. We publish this on every product because the wrong purchase costs you more than the price.
- It does not issue certificates — no certificate generator; it holds the evidence you were given
- Not a learning platform — no courses, no content, no quizzes, no e-learning, no SCORM
- One tag, not a rules engine — a competency applies to everyone, or to one group
- No self-service login — the people in the register are tracked, not users
- Changing a competency's validity does not rewrite records already on file
- Single-tenant: one organisation per installation
Still the right fit? See the price → · Not sure — see who should stay with the SaaS →
Pricing — one-time, yours forever
- ✔ Full source included — PHP you can read and change
- ✔ No subscription. One payment, yours forever
- ✔ It never phones home
- ✔ Your data stays on your server
- ✔ 14-day refunds — we’d rather refund than argue
- ✔ Offline test suite in the box — run it before you rely on it
- ✔ If we ever stop: after 1 year the domain limit lifts, after 3 years your copy relicenses to MIT — it’s in the licence
Not ready to own it? Ownware Cloud runs selected apps from $12/month — and after 12 paid months the perpetual self-host licence is yours.
Read before you buy — what the zip looks like inside
trainora/
README.md · QUICKSTART.txt · LICENSE.txt
app/
index.php · router.php · config.sample.php · Dockerfile
src/ the classes — plain PHP 8, no framework, no Composer
controllers/ every route handler
views/ every screen
tests/ the offline test suite — run it yourself: php tests/run.php
bin/ packaging · seeding · maintenance scripts
API.md the REST + webhook + MCP reference
Nothing is obfuscated or encoded. What you read is what runs.
What the same job costs rented
Every figure is read from the vendor’s own pricing page and carries the date it was read.
Core $119/month (1–40 users); Grow $229/month (1–70); Pro $449/month (1–100) + $6 per additional user; Free up to 5 users
1 month of TalentLMS equals the one-time $79.00.
Source, read 2026-08-22 →Business $6.91 USD per user/month at 100 users ($8,286.00 annual price); $4.46/user at 300; $3.97/user at 500
1 month of iSpring Learn equals the one-time $79.00.
Source, read 2026-08-22 →The full table — every competitor, what each does better than us, and who should stay with them: Trainora vs renting →
Which licence do I need?
It comes down to how many installations you need. Running your own business on one site is the Single licence. Building or running sites for other people — a second domain of your own, or an installation a client keeps — is the Extended licence.
Single licence
One (1) domain or subdomain
One business, running it on one site.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended licence
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
Extended licence
Unlimited sites you own or operate
Agencies, and anyone running it on more than one site.
- Everything the Single licence grants
- Install it on as many domains as you own or operate — no cap on the number
- Build and hand over one installation per client project
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt, and the licence you bought is
named on your order and in your buyer portal. The complete wording lives on the
terms page, and the live demo is free for as long
as it takes to decide.
No reviews yet — so here is what we offer instead. Every competitor price on our comparison pages is source-linked and dated, and when a vendor’s price won’t load we say so rather than guess. See the sources for yourself →
After you buy
The four things people ask right before they decide.
Your download link always serves the current build at the time you fetch it — re-download any time from your order page or the buyer portal. No renewal fee to keep what you bought.
Email support for installation and for defects in the code as delivered — a person answers, usually within a day or two. It does not cover custom development or server administration. What support covers →
Refunds are handled by Lemon Squeezy as Merchant of Record, case by case — if something is broken and we can’t fix it, we’d rather refund than argue. EU consumers additionally hold the statutory 14-day right until delivery starts. Refund terms →
Nothing stops. You hold the full PHP source, it runs on your own server, and the software does not phone home — there is no licence check that can fail and no cloud that can be switched off. LICENSE.txt ships inside the zip, so your right to keep running it never depended on this site existing.
Covered in these guides
Most training spreadsheets have two states: has it, or does not. That collapses three different problems into one column, and the one it hides is the one an auditor opens with. The case for a matrix that distinguishes lapsed from never-done from does-not-apply.
Questions about Trainora
Does it issue certificates?
No. There is no certificate generator. It records that training happened and holds the certificate you were given as evidence.
Is it a learning platform?
No. No courses, no content, no quizzes, no e-learning, no SCORM. It records that training happened; it does not deliver it.
Can people log in and see their own record?
No. The people in the register are tracked, not users — nobody logs in as themselves. Staff who administer the register have accounts, roles and 2FA.
If I change how long a competency stays valid, do old records change?
No. Changing the validity period does not rewrite records already on file — a certificate does not become longer-lived because you changed a setting afterwards.
How finely can I say who needs what?
A competency applies to everyone, or to one group tag. That is the whole model, deliberately — anything more expressive becomes a rules engine nobody can audit.
