================================================================
ScriptLMS
 Read Me First
================================================================

----------------------------------------------------------------
 START HERE — FIRST LOGIN
----------------------------------------------------------------

1. Upload all the files to your web hosting account.

   THERE'S AN EASIER WAY: the ScriptLMS Easy Installer. Instead
   of uploading every file yourself, you upload one file and it
   sets everything up for you. Download it from:

       https://scriptlms.com/download/scriptlms-installer.zip

   Unzip it on your computer, then:

     a. Upload scriptlms-install.php to your website's main
        folder (public_html on Hostinger and most hosts).

     b. Open it in your browser, for example:

            https://yoursite.com/scriptlms-install.php

     c. Choose the folder ScriptLMS should live in, and click
        Install.

   The installer downloads the latest version of ScriptLMS for
   you. If your server can't reach scriptlms.com, you can use
   the scriptlms.zip you already have instead: either pick it on
   the installer's page, or upload it (still zipped) into the
   same folder as scriptlms-install.php and the installer finds
   it on its own. If your browser saved it under a different
   name, such as "scriptlms (1).zip", rename it to scriptlms.zip
   first.

   The installer checks that every file is genuine before
   installing, asks before using a folder that already has files
   in it, and deletes itself when it's done. It's for new
   installs only - updates are installed from the License page.

2. Go to the site in your browser and log in with:

       Username: admin
       Password: 12345678

   This is the same starting login on every copy of this
   program, so please change both the username and password
   right after your first login (there's a "Change Password"
   link at the top of every admin page).

3. On the Dashboard (the first page you see after logging in),
   set your Time Zone. Every date and time shown throughout the
   program (due dates, completion times, certificates, reports)
   is based on this one setting.

4. Start building. Add a training module, add staff accounts,
   and assign training. If you get stuck, click the blue "?" in
   the corner of any page for a step-by-step walkthrough of
   exactly what you have open.

5. Optional but recommended: open "System Check" (at the bottom
   of the admin sidebar) to confirm your staff information is
   protected on your server.

That's it - there is nothing else to configure by hand anywhere
in the program.


----------------------------------------------------------------
WHAT THIS PROGRAM DOES
----------------------------------------------------------------

ScriptLMS is a complete, self-contained staff
training and compliance system. It works for any kind of
business - it isn't limited to healthcare, even though that's
the industry it was originally built in. Everything - building
training content, assigning it to staff, tracking who's done
what, and printing certificates - is done through simple
point-and-click admin pages. There is no coding, no database to
set up, and no outside software required to run it.

A few things that make it stand out:

* NO DATABASE REQUIRED. Everything is stored in plain data files
  on the server. That means no database software to install, no
  database passwords to manage, and nothing extra for a web host
  to configure. If your web host can run a PHP website, it can
  run this program.

* BUILT FOR BIG TEAMS. ScriptLMS has been stress-tested with
  10,000 staff accounts and more than 110,000 training assignments
  across 11 training modules, on ordinary shared web hosting with
  no database. At that size nothing was lost, searching for a
  staff member stayed instant, and every page scrolled smoothly -
  the biggest admin lists just take a few more seconds to open.
  At 5,000 staff, staff sign-in, saving training progress, the
  admin pages, reports, and backups all stayed just as quick as
  with a handful of people. Long lists load in groups as you
  scroll, a whole staff can be assigned training in one click,
  and Bulk Import shows a progress bar for large lists.

* THIRTEEN DIFFERENT WAYS TO BUILD TRAINING CONTENT - Info Pages,
  Video, and Tests, plus ten interactive activity types - all fully
  menu-driven. Point, click, type, and drag to build each page. No
  knowledge of code or web design is needed for any of them:

    - Info Pages        - free-form pages you design yourself,
                          type text directly onto the page, and
                          drag boxes and images anywhere you want
    - Video             - upload a training video (or reuse one
                          already on the server); it automatically
                          resizes to fit any screen without ever
                          stretching or cropping the picture
    - Tests             - build a bank of questions and choose
                          how many get randomly pulled each time
                          staff take the test (e.g. 60 questions
                          in the bank, staff answer a random 10),
                          and the score needed to pass (80%
                          unless you change it)

  The ten interactive activity types:

    - Click the Correct Image - staff pick the right picture from
                          several choices
    - Click Items in Order - staff must click items in the
                          correct sequence
    - Multiple Choice Question - one or more correct answers per
                          question
    - True or False     - staff mark each statement true or false
    - Sort Into Categories - staff sort items into the right group
    - Match the Pairs   - staff match terms to their definitions
    - Scenario / What Would You Do - staff read a scenario and
                          pick the best response
    - Hotspots and Hazards - staff click marked spots on an image
                          to find hazards, items, or anything else
    - Story / Scenario Walkthrough - a multi-page story with
                          pictures, and a question on any page
                          you choose
    - Rank Your Priority - staff drag items into the order they
                          believe is correct, and are scored on
                          how closely it matches

  Every one of the ten can also use audio - all of it optional.
  Upload an MP3 for any part you want read aloud: the page's
  title and instructions as staff open it, the answers or items,
  and spoken feedback for right answers, wrong answers, and
  finishing. It plays on its own with nothing extra on the
  screen - a page's audio starts a moment after it opens, with
  no Start button to click (Info Pages and the Audio Story work
  the same way) - and a page without audio works exactly the
  same. Many of the messages staff see (Correct, Wrong, All
  found, and so on) can be worded however you like, too.

  Plus added components - extra activity types that plug right
  in (see "Added components" below). The first one, the Audio
  Story, comes already installed.

  Mix them any way you like. A training module can use as many
  Info Pages, Interactive Pages, Videos, and Tests as you want,
  in whatever order you want - there's no set pattern and no
  limit. For example, one module might be three interactive
  pages, then a video, two more interactive pages, a few Info
  Pages, a test, another interactive page, another test, and
  another video - and the next module can be built completely
  differently. Staff go through each module's steps in the order
  you set, and each step unlocks when the one before it is done.

  Every one of these builders includes its own step-by-step help
  - click the blue "?" button on any editing screen for a
  walkthrough of exactly how that piece works. Nobody building or
  taking this training ever needs an outside manual.

* STEP-BY-STEP HELP ON EVERY PAGE. Every page in the program -
  admin and staff alike - has a blue "?" button in the corner.
  Click it for a step-by-step walkthrough of that page, not just
  a summary. When a window is open (Add Staff, Bulk Import, Mark
  Complete, Email Reminders, and so on), the "?" shows the steps
  for exactly that window. Staff get their own simple
  walkthroughs, written for them - how to do each kind of
  training step, take a test, print a certificate, or send a work
  order.

* SEE IT WORKING BEFORE YOU BUILD ANYTHING. The program comes
  with demo modules already set up - a working example of every
  one of the 10 interactive components above, plus an Info Page
  and a Test, all filled in with real content and a few
  professional-looking images (every one made with AI), plus a
  complete narrated Audio Story ("Fall Safety: Mrs. Jones Wants
  to Walk") with sound and pictures. Install it, open it up, and
  you can immediately click through and try every single piece
  of what this program can do, exactly as your own staff would
  experience it - no need to build anything yourself first just
  to see what it looks like.

* AUDIO STORY (comes installed). A short story read aloud, page
  by page, with pictures - it stops to ask questions along the
  way. Each answer plays its own feedback ("Correct!" or "Not
  quite...") and the story moves on once staff pick the right
  one. The words always show on screen too, like captions, so it
  works for staff without speakers or headphones and for anyone
  hard of hearing. Laid out on the same drag-and-place pages as
  the Story / Scenario Walkthrough, with your own fonts, colors,
  and pictures. Record your own voice for the clips, or make
  them with any text-to-speech tool.

* ADDED COMPONENTS. New activity types can be added to the
  program at any time without updating it: choose a component's
  .zip with "Install Component" (at the bottom of the
  Interactive Page Builder's list of templates) and it's ready
  to use. "Remove Component" takes one off again - it shows you
  which modules use it first, and pages already built with it
  keep working for staff.

* MY LIBRARY - SHARE AND REUSE PAGES. Any Info Page, Interactive
  Page, or Test can be saved as a single .zip file with "Export"
  (in its menu), including every picture and audio file it
  uses. "Import Library Item" adds one to your My Library, and
  "From Library" puts a copy into any module, ready to use as-is
  or edit to fit your facility. Pictures and audio are never
  overwritten - a file that's already on your server is reused,
  and a different one with the same name is kept under a new
  name. Exporting is included with a licensed copy (not the free
  trial); importing works in every copy, trial included. Watch
  scriptlms.com for ready-made library items you can download.

* EASY STAFF SETUP. Add staff one at a time, or paste in a whole
  list at once with Bulk Import. Every account needs a first
  name, last name, username, and email - staff are listed,
  sorted, and printed by name (Last, First) throughout the
  program, and their name is what appears on their certificates.

  No two accounts can have the same name, so everyone can always
  be told apart on reports and certificates. If you already have
  a John Smith and hire another, add a middle initial to the
  First Name - "John P" - and the program will accept it. (This
  counts deactivated accounts too.)

  Bulk Import takes one person per line, names first:

      first_name,last_name,username,email,role

  for example:

      John,Smith,jsmith,jsmith@company.com
      Mary,Jones,mjones,mjones@company.com,admin

  (leave role off for regular staff, or put "admin"). Each
  imported account gets a random temporary password that the
  person must change the first time they sign in.

  Nothing is saved right away: a Review window first lists
  everyone who will be created, and any lines that will be
  skipped (with the reason - for example, a name already on
  file that needs a middle initial). Click Import to create the accounts,
  or Cancel to go back to your list and fix a mistake first.
  While it imports, a progress bar shows how far along it is -
  a long list is sent in small groups behind the scenes, so even
  thousands of staff at once never run past your server's time
  limit. Keep the page open until it finishes.

  IMPORTANT: When the import finishes, a window lists every new
  staff member with their temporary password. These passwords
  are shown ONLY ONCE - they can never be displayed again. Click
  "Print" in that window, or "Copy" to copy the whole list so you
  can paste it into a document or spreadsheet and save it, BEFORE
  closing it - so you can give each person the password they
  need to sign in. If the window is closed without printing,
  you'll need to use the Reset Password button on Staff Accounts
  for each person to give them a new temporary password.

* ACCOUNT SAFETY. Three wrong passwords in a row locks an account
  for 30 minutes. Forgotten passwords are handled with a Reset
  Password button that gives a one-time temporary password and
  makes the person choose their own at the next sign-in. When
  someone leaves, Deactivate blocks their sign-in but keeps every
  bit of their training history for inspections and audits
  (Delete is only for genuine mistakes, like a duplicate account).

* FULL STAFF TRACKING. Assign training to staff, and see exactly
  who's on track, who's overdue, and who's finished, at a glance,
  through the Compliance Matrix and the Due Dates Report - which
  shows who has training coming due soon (in the next 14, 30, 60
  or 90 days) as well as who's already past due. The Completion
  Report can also show any staff member's full training history
  across every year, ready to print for an inspection or audit.
  Every list can be searched, sorted by any column, and printed,
  and stays quick even for very large staffs.

* ASSIGN TRAINING BY POSITION. Give each staff member a Position
  on Staff Accounts (CNA, RN, Dietary, and so on). On the
  Assignments page, pick a position from the Position dropdown to
  list just those people, click Select All, check the modules
  they need, and click Assign Selected. Anything someone already
  has is skipped, so it's safe to do again whenever new staff
  join. Keep each position spelled the same way on every account
  (always "CNA", not sometimes "C.N.A.").

* SMART DUE DATES FOR NEW HIRES. Someone hired after a module's
  due date has already passed isn't instantly shown as overdue -
  their due date automatically rolls forward to the next one.

* MANUAL COMPLETIONS, WITH A PAPER TRAIL. If someone genuinely
  finished a module but it didn't get recorded (a browser crash
  mid-test, a lost connection), an admin can mark it complete by
  hand - and the reason is saved in the Audit Log, so it's on
  record if an inspector ever asks.

* SUPERVISORS (optional). Give a staff member - a charge nurse,
  a department lead, a shift manager - a team to look after,
  without making them an admin. Set it up from the "Supervisors"
  button on Staff Accounts: pick the supervisor, tick the staff
  on their team, and choose what else they're allowed to do
  (print certificates, reset passwords, mark training complete,
  assign training, and record outside classes their team
  attended - all off until you turn them on). The
  supervisor gets a "My Team" link in their portal showing only
  their own team: where everyone's training stands, what's coming
  due, who's past due, and what they've completed, all printable.
  They never see the admin pages or anyone outside their team,
  and anything they change is recorded in the Audit Log under
  their own name. A supervisor is still a regular staff member -
  they do their own training and use one seat, like any other
  staff account.

* EMAIL REMINDERS (optional). Staff can be emailed automatically
  when training is coming due or past due - sent through your own
  organization's email account, using the same outgoing mail
  details you'd use to set up that email on a phone. Set it up
  once from the Due Dates Report, switch it on, and it runs by
  itself every day. Each person gets one email listing all their
  training that's due, never the same reminder twice.

* WORKS ON PHONES. Staff can take their training on a phone held
  sideways (landscape); if they hold it upright, a friendly
  message reminds them to turn it.

* A GENTLE APPROACH TO SHOWING WHAT'S DUE. Staff aren't shown a
  full year of upcoming training all at once - a module only
  appears on their own dashboard once it's within 3 months of its
  due date (grayed out at first, then startable early once it's
  within 2 months). If you assign a year's worth of training at
  once, don't worry if staff don't see all of it immediately -
  each one will show up right on schedule, on its own.

* BIRTHDAY & HIRE DATE ANNIVERSARY REMINDERS. Every admin page's
  sidebar includes quick links showing whose birthday or hire-date
  anniversary falls this month (plus a preview of next month) - a
  nice touch for building team culture, with zero setup required.

* CERTIFICATES, built automatically on completion, with your own
  choice of signature (typed or a real signature image) and an
  optional background image. Staff have their own "My
  Certificates" page where they can view and reprint every
  certificate they've ever earned - including past years'
  renewals - and they can print a record of their completed
  training anytime.

* CE CREDIT TRACKING with a fully adjustable annual reset date -
  set it to match your organization's own renewal cycle, right
  from the Dashboard, no code involved.

* OUTSIDE CLASSES. When staff attend a class, conference, or
  in-service somewhere else, click "Outside Classes" on the
  Completion Report, enter the class name, date, and CE credits
  (plus the provider and a note if you like), and tick everyone
  who attended. Each person gets the credits toward their total,
  the class on their reports and their own My Certificates page,
  and a certificate the program makes for them - there's nothing
  to upload. An outside class is extra credit on top of assigned
  training; it never takes the place of a module that's due.
  Supervisors can be allowed to record classes for their own
  team, too.

* COURSE EVALUATIONS AND APPROVAL STATEMENTS (optional - for
  organizations approved to give CE credit). Tick "Ask for an
  evaluation when finished" in any module's Edit window, and
  staff answer a short Course Evaluation as the module's last
  step - the module isn't complete, and its credits and
  certificate aren't given, until they submit it. Rating
  questions (Strongly Disagree to Strongly Agree) must be
  answered; comment questions are optional. The questions are
  set once, for every module, with "Evaluation Questions" on
  Training Modules - starting from a ready-made set you can
  reword, add to, or trim. Click "Evaluations" on the Completion
  Report to see the results for any module and dates: the
  average for each question, every comment (without names), and
  who responded - ready to print for your approving body. Each
  module can also have an approval statement printed on its
  certificates, with its credits filled in for you. An admin's
  or supervisor's Mark Complete never needs an evaluation.

* SIGN-IN LOG - REAL LEARNING TIME. Click "Sign-In Log" on the
  Completion Report to see when each staff member signed in and
  out, and how much of that time was actually spent learning, for
  any dates you choose. Learning time only counts while they're
  engaged on the training page: a video or audio is playing, or
  they've moved the mouse or touched the screen within the last
  few minutes (5 unless you change it). When they step away, the
  clock pauses at their last movement - the idle minutes are never
  counted - and starts again the moment they move. Switching to
  another tab, window, or program pauses their video and audio
  and stops the clock until they come back. Nobody is ever signed
  out for being idle. Each sign-in shows whether they logged off
  or just left, and the whole log prints for an audit. History is
  kept for 24 months, then removed automatically a month at a
  time - or choose 12, 36, or 60 months, or keep it forever.
  It's included in every backup.

* OPTIONAL REWARDS SYSTEM - award points for on-time and early
  completions, and let staff redeem them from a rewards catalog
  you control. Entirely optional; leave it off and staff never
  see any mention of it.

* BUILT-IN BACKUP & RESTORE - automatic backups are already
  turned on from day one (every Monday at 2:00 AM - change the
  day, time, or weekly/monthly anytime), and you can make one
  yourself with one click whenever you like. Every backup holds
  all your training records AND your images (training pictures,
  certificate signature and background, rewards pictures, logo),
  your audio, your My Library, your added components, and every
  Maintenance record, form, picture, and file.
  Videos are the only thing left out, since they're so large - so
  always keep your own copies of your training videos. The 3 most
  recent backups of each kind are kept, so they never fill up
  your server. Plus a full Audit Log of every admin action, for
  easy accountability - which can be exported to a spreadsheet
  file (CSV) to hand to an inspector or auditor.

* SYSTEM CHECK - one page that tests your server and confirms
  your staff's information is protected: that the data and
  backup folders can't be opened in a web browser, that the
  starting admin password has been changed, that the site uses a
  secure (HTTPS) connection, and more. Anything that needs
  attention comes with plain instructions for fixing it.

* YOUR OWN BRANDING (optional). With a white-label license, the
  program shows your own company name - and, if you like, your
  own logo - in place of ScriptLMS, so it looks like your
  organization's own training system.

* BUILT TO BE DEPENDABLE. Behind the scenes, the program is built
  to keep your records safe and quick: many staff can save their
  progress at the same moment without anything being lost; the
  order of training steps is enforced by the server itself, so
  steps can't be skipped to get credit; and it tidies up after
  itself automatically, so it stays fast as years of training
  history build up.

* FREE BONUS - MAINTENANCE: WORK ORDERS AND LIFE SAFETY, BUILT IN.
  Every copy of ScriptLMS includes a complete maintenance program
  at no extra cost. It starts out off, so a facility already using
  another maintenance system never sees it - turn it on under
  Maintenance > Settings in the admin sidebar. Turning it off
  later keeps every record.

  Settings: add your maintenance team as Directors, Assistants, or
  Techs (Directors sign off everything, Assistants sign off
  preventive tasks, Techs work the work orders); add your rooms -
  a whole run at once, like Room 101 to 172 with 2 beds each - and
  areas like the Kitchen; choose who can create work orders (all
  staff, or only the people you pick); and set the Problem Types
  staff tap first, like Call Light or Plumbing.

  Work orders: staff get a "Create Work Order" button to say where
  the problem is, what kind it is, what's wrong, with an optional
  picture and an Urgent box, and follow each one under My Work
  Orders. One sent in a hurry can be changed until it's completed,
  or deleted while Maintenance hasn't started on it. The
  maintenance team gets a "Maintenance" button with a red count of
  what's waiting, and sets each work order to In Progress, Waiting
  on Parts, or Completed, with notes, who did the work, and a
  printout as proof the job was done.

  Life Safety and preventive maintenance: set up the schedule
  (daily - Monday to Friday or every day - weekly, every 2 weeks,
  monthly, quarterly, semi-annual, or annual), each task with its
  own steps to tick and an optional reading. A starter list of
  common care-facility tasks is included. Every sign-off is locked
  with the person's name and the date and time, and corrections
  are added underneath rather than changing the original.

  Forms: build your own - a Fire Drill record (a ready-made
  template is included), a generator log, anything - with blanks,
  dates, pick-one and check-box answers, comment boxes, and
  signature boxes signed by finger or mouse, and attach one to any
  task so signing it off means filling it in. It prints exactly as
  you laid it out.

  Equipment and air filters: an equipment list keeps each
  generator, boiler, and extinguisher's location, serial number,
  warranty, vendor, manuals, scheduled tasks, and repair history
  in one place. Air filters are tracked by location and size, with
  what's due, what's on hand, and a printed order list and install
  list.

  History and Reports print a clean record for inspectors: any
  task's sign-offs for any dates (one full page each if you like),
  missed and late tasks, fire drills by quarter and shift, and a
  work order summary. A Needs Attention box on the Admin Dashboard
  shows past-due Life Safety tasks and urgent work orders. Records
  older than two years move to yearly archive files by themselves,
  so the pages stay quick and nothing is ever lost, and everything
  is included in your backups.

* FREE UPDATES INCLUDED, INSTALLED WITH ONE CLICK. When a new
  version is available, a small green "Update" badge appears next
  to License in the admin sidebar, and the License page shows
  what's new. Click "Install Now" and the program downloads the
  update, checks that it really came from ScriptLMS (every update
  is signed, and anything else is refused), makes a full backup
  first, and installs it in a few seconds. If anything goes wrong
  partway, every file is put back the way it was. If your server
  can't connect to scriptlms.com, click "Download Update" and
  choose the file with "Install Update" instead. Updating is always
  optional, and an update never touches your staff, training
  records, uploaded files (pictures, audio, videos), My Library,
  added components, or Maintenance records.

* A 30-day free trial starts automatically the moment the
  program is first opened - no trial code needed. The trial
  allows up to 15 staff accounts - plenty to set everything up
  and try it with a small group before buying. After that,
  a license code unlocks continued use. Whatever the license
  status ever is, staff logins and in-progress training are
  NEVER affected - licensing only ever pauses admin-side growth
  actions if a license genuinely lapses. If it does:

    Always works:
      - Staff signing in and completing assigned training
      - Printing or editing a certificate, for any completion
      - Every report
      - Managing existing staff accounts
      - Deleting a module, or content within one
      - Backup & Restore
      - Installing program updates

    Waits for a current license:
      - Creating a new module
      - Editing a module or its content
      - Adding new content to a module
      - Adding new staff accounts

  Enter a renewed license code and everything that was waiting
  works again right away - nothing is lost in the meantime.


----------------------------------------------------------------
ABOUT TRAINING CONTENT AND CE CREDIT
----------------------------------------------------------------

This program is the platform, not a content library - it doesn't
come with pre-made training videos or a course catalog. You bring
your own training material (videos, images, audio, written
content), and the program handles everything around it: delivery,
tracking, testing, certificates, and credit totals. What it does
come with is a full set of demo modules showing every one of the
10 interactive components already built and working (see "See it
working before you build anything" above) - so you can explore
and test every piece of the program immediately, even before you
have your own content ready to load in. It also comes with one
complete, narrated Audio Story on fall safety, and ready-made
library items will be offered on scriptlms.com over time (see "My
Library" above). Every one of them can be edited to match your
own facility's policies - please review any ready-made training
against your state's and your facility's own policies before
assigning it.

Need pictures for your training? You don't have to take your
own photos. Every image in the demo modules was made with an AI
image tool - just describe the picture you want (many of these
tools are free), save it to your computer, and upload it right
from the page you're building. The program saves it to your
images folder for you. With your images ready, an interactive
training page can be built in about 5 minutes.

Need audio for your pages or an Audio Story? Record it yourself
on a phone or computer, or let AI do it: many AI text-to-speech
tools - a lot of them free - turn the text you've already typed
into a natural-sounding MP3 in seconds. For speech, MP3 at
64 kbps, mono sounds clear and keeps each minute of audio to
about half a megabyte. File names can be anything you like -
spaces, apostrophes and all - the program keeps them exactly as
they are.

If your staff need to earn Continuing Education (CE) credit
toward a professional license, here's the one important thing to
understand: this program accurately tracks and documents
completion and credit totals for whatever you assign it, but
whether a specific piece of content actually counts toward
someone's license renewal depends on that content's own
accreditation - not on this software. Accreditation requirements
vary by profession, for example:

    - Nurses generally need content approved through ANCC or a
      state board of nursing
    - CPAs need NASBA-approved providers
    - Social workers/counselors need ASWB or NBCC-approved
      providers
    - Many general workplace safety topics (OSHA-type training -
      fire safety, HazCom, bloodborne pathogens) don't require
      special accreditation at all - they just need to be
      genuinely completed and documented, which this program
      already does automatically

In short: check with your state board or your content's provider
to confirm a course qualifies for the specific credit you need -
this program will faithfully track and certify whatever you tell
it to, but accreditation itself is between you, your content, and
the licensing body involved, not something the software can grant.

If your organization IS an approved provider, ScriptLMS keeps the
records approving bodies usually ask for: a course evaluation from
every learner, your approval statement on each certificate, and
every completion and credit total (see "Course Evaluations and
Approval Statements" above).

A free starting point for general workplace safety training:
osha.gov maintains an official training video library, and there
are other free video collections online for common topics like
fire extinguisher use, hazard communication/GHS labeling, and
bloodborne pathogens - search "free OSHA training videos" to find
current options.


----------------------------------------------------------------
WEB HOSTING REQUIREMENTS
----------------------------------------------------------------

This program is easy to host. In practice, it has run without
any special requests to hosting support across multiple
different hosting companies. Most hosts will simply work with no
changes needed. The items below are things to be aware of, not
necessarily things you'll ever have to act on.

REQUIRED:

* A web server that runs PHP (Apache, LiteSpeed, Nginx, and
  Windows IIS all work - virtually every hosting plan that
  advertises "PHP" or "WordPress hosting" qualifies). If your
  site runs on Nginx, see "Keeping your data private" below.

* PHP version 7.4 or newer. PHP 8.0 or newer is recommended,
  since older versions no longer receive security updates.

* The PHP "openssl" extension enabled. This is needed to verify
  license codes and is turned on by default on nearly every PHP
  host - this is only worth checking if your host is unusually
  restrictive.

* The PHP "zip" extension enabled. This is used for backups, for
  Export and Import of library items, and for Install Component.
  Like openssl, it's turned on by default on nearly every PHP
  host - the program tells you plainly if it's ever missing.

* No database of any kind is required.

* No outbound internet access is required. License checking is
  done entirely on your own server - it never has to "call
  home" to check in anywhere, so it works the same on completely
  offline/isolated networks as it does anywhere else. (The
  "Update available" notice is checked by the admin's own web
  browser, not the server - if it can't reach scriptlms.com, the
  notice simply doesn't appear and nothing else is affected. The
  server only connects to scriptlms.com when an admin clicks
  "Install Now" to download an update; "Install Update" works
  with no connection at all.)
  The one exception is the optional Email Reminders feature: when
  it's switched on, the server connects to your own email
  provider's outgoing mail server to send the reminders.

USUALLY FINE, BUT WORTH KNOWING ABOUT:

* File write permissions. The program needs to be able to save
  its own data files and any uploaded videos, images, and audio
  to a handful of folders (data, videos, images, audio,
  components, and a few asset folders).
  Nearly every standard hosting account allows this by default.
  If something in the program ever fails to save with no clear
  reason, this is the first thing to ask your host to check.

* Video upload size. Training videos are most often under an
  hour, occasionally up to around an hour and a half - the
  program itself allows video files up to 2GB. However, PHP
  itself limits upload size separately (very small by default -
  often just a few megabytes), so this may need to be raised by
  your host if a video upload fails or stops partway through.
  Ask your host to set the following in PHP's configuration:

      upload_max_filesize = 2G
      post_max_size = 2G
      max_execution_time = 300
      max_input_time = 300

  Most hosts can make this change quickly if asked, or may
  already have generous enough limits set by default.

* Page caching. Some hosts run a caching system in front of your
  site (LiteSpeed Cache is a common one on shared hosting). The
  program already tells the browser not to cache its pages, but
  on rare occasions a host-level cache can still show an old
  version of a page after something changes. If updates ever
  seem to "not save" but they actually did, ask your host to
  exclude this program's folder from any page caching.


----------------------------------------------------------------
KEEPING YOUR DATA PRIVATE
----------------------------------------------------------------

The program keeps its data (staff names, training records) and
its backups in two folders, "data" and "backups". Nobody ever
needs to open these in a web browser - the program reads them
directly from the server - so they're locked against browser
access automatically: the program places small protection files
in both folders itself, and puts them back if they're ever
deleted. This works on Apache, LiteSpeed, and Windows (IIS)
servers - which covers most web hosting - with nothing for you
to do.

NGINX SERVERS ONLY: Nginx ignores those protection files, so on
Nginx the two folders must be blocked in the server's own
settings instead. If you're not sure which kind of server you
have, ask your host - and if it's Nginx, send them this request:

    Please block browser access to the "data" and "backups"
    folders of my ScriptLMS installation, for example:

        location ~ /(data|backups)/ { deny all; }

It's a quick change for whoever manages the server.

To confirm your folders are protected on any server, open the
"System Check" page (at the bottom of the admin sidebar). It
tests both folders for real, the same way an outsider would, and
shows a green check if they're safe - or exactly what to do if
they're not.


----------------------------------------------------------------
CREDITS
----------------------------------------------------------------

The narration voice in the included Fall Safety Audio Story was
made with Piper text-to-speech, using a voice trained on the
LibriTTS recordings (licensed CC BY 4.0).


----------------------------------------------------------------
QUESTIONS
----------------------------------------------------------------

If anything above doesn't match what you're seeing, check your
hosting control panel first, or contact your host's support -
in almost every case, they can turn on or adjust anything listed
here in just a few minutes.
