Ownware
Home›Trainora›Quickstart
Trainora · Quickstart

Trainora Quickstart, as shipped in the download

The QUICKSTART.txt in the download — the same steps your delivery email carries.

TRAINORA — QUICKSTART
=====================

Self-hosted training matrix and expiry tracker — PHP + MySQL/SQLite.
Records that training happened and when it runs out. It does NOT deliver
training and it does NOT issue certificates (see "WHAT IT IS NOT" below).


REQUIREMENTS
------------
  - PHP 8.0+ with extensions: pdo, pdo_sqlite (or pdo_mysql)
  - MySQL 5.7+ / MariaDB 10+ OR SQLite 3 (SQLite requires no extra setup)
  - A web server (Apache with mod_rewrite, or Nginx with try_files)
  - No Composer packages, no API keys, no external services.


SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the contents of the `app/` folder to your web root (e.g. public_html/)
   or a subdirectory (e.g. public_html/trainora/).
2. Make sure `data/` is writable by the web server (chmod 775 usually does it).
3. Open the address in a browser. The installer runs on the first visit.
4. Create your admin login when asked, then sign in.


FIRST TEN MINUTES
-----------------
1. PEOPLE — add the people you track, or bring a list in from a spreadsheet
   under Import. They never sign in; they are records, not users.
2. COMPETENCIES — add the things people can hold, and how many months each
   stays valid. Use 0 for something that never expires (an induction).
   Leave "Applies to" blank for everyone, or type a team/role tag to scope it.
3. THE MATRIX — the grid fills itself. Click any cell to record a completion;
   the expiry date is computed from the competency's validity, so you never
   type one.
4. SESSIONS (optional) — schedule training, book people on, and tick who
   turned up. Each attendee gets a record written for them.


RENEWAL REMINDERS (OPTIONAL, OFF BY DEFAULT)
--------------------------------------------
Settings -> Email. Put in YOUR OWN SMTP server. Nothing is routed through
anyone else. Then point a daily schedule at:

    php /path/to/app/cron/reminders.php

Use --dry-run first: it lists who would be written to and sends nothing.
Trainora runs no background job of its own. If nothing runs that file,
nothing is sent. No cron on your host? Settings -> "Run reminders now"
runs the same pass, and Settings shows when it last ran.


BACKUPS
-------
Settings -> Data & access -> Backup (JSON), or the whole SQLite file. The
restore screen shows a dry-run diff before it writes anything.


WHAT IT IS NOT
--------------
  - It does NOT issue certificates. Export /export/certora-recipients.csv and
    import that file into Certora, which does.
  - It is NOT a learning platform: no courses, content, quizzes or SCORM.
  - Nobody in the register can log in to see their own record.
  - A competency applies to everyone or to ONE team/role tag. There is no
    rule language.
  - Changing a competency's validity does not rewrite records already on file.
  - Single organisation per installation.


TROUBLESHOOTING
---------------
  - "Database connection failed" — check data/ is writable, or your MySQL
    credentials in config.php.
  - A blank page — turn on PHP error display, or check the server error log.
  - Cells you expected are hatched ("does not apply") — the competency is
    scoped to a team/role tag that does not match that person's.

← Back to Trainora · Manual · API · Test run

Affiliate program
Recommend tools people own — earn 35% on every sale. 90-day tracking, instant delivery, payouts by Lemon Squeezy.
Become an affiliate →