Loading Harmony Fire Learning Hub…

πŸ“–Log
πŸ“…Calendar
πŸ“Request
πŸ“‹Mine
β‹―More

More options

New Training Request

Complete all steps to submit your request for approval

1 Β· You
2 Β· Course
3 Β· Justification
4 Β· Review
Your profile details have been pre-filled. Please verify they are correct before proceeding.
πŸ”
πŸ“‹ Please review all details below before submitting.
Approval Workflow
Submitted
You
Line Manager
Stage 1
SHEQ
Stage 2
HR
Stage 3
Booked
Final

⚠️ Declaration

By submitting this request I confirm the information provided is accurate and I understand that approval is subject to business need, budget availability, and alignment with Harmony Fire's training priorities.

My Training Requests

Training Calendar

All Training Requests

Master list of every training request β€” pending, booked, completed, declined, withdrawn. Useful for oversight and audit.
RefEmployeeCourseDept DateStageStatusSourceActions

Training Log

EmployeeCourseCategoryProvider DateExpiryStatusVISIONActions

Training Providers

Dashboard

0
Total Requests
0
Pending Approval
0
Approved / Booked
0
Declined

By Department

By Priority

Recent Activity

Approvals Queue

Admin Panel

Users
Course Catalogue
Providers
Settings
Export
Import CSV
API

User Management

Manage roles, add and remove users

Note on removing users: "Remove" disables the account in the portal and deletes the profile document. The Firebase Auth account itself can only be deleted from the Firebase Console (or via a Cloud Function). Disabled users cannot log in even if their Auth account still exists.

Course Catalogue

Manage available courses

Provider Management

System Settings

⚠ Heads up: Webhook URLs below are dispatched from the browser. They are masked here for safety, but for production any logged-in admin could still read them via dev tools. For real lockdown, move webhook dispatch to a Firebase Cloud Function and apply Firestore rules restricting settings/main reads to a service account.

Export Data

Export portal data to CSV for reporting.

Bulk Import

Backfill historic training records from a spreadsheet

Drop in a CSV of historic training (or anything not booked through the portal). Each row becomes a Training Log record. Useful when onboarding the portal β€” saves days of typing.

Imported records are tagged manualEntry:true and appear instantly in the Training Log, Calendar and reports.

API β€” Coming in Weeks 6–7

Endpoints are being built; wiring into this dashboard is next.

Once deployed to Firebase, authorised systems can read live data from the Learning Hub via three GET endpoints. Read-only, key-protected, CORS-enabled.

Endpoints

All require header X-API-Key: <your-key>

Endpoint Firestore Collection Returns Status
GET /api/users users All user profiles Pending deploy
GET /api/completions completions Training completion records Pending deploy
GET /api/expiries expiries Expiry & renewal records Pending deploy

Deploy in ~15 minutes

Firebase Cloud Functions v2 Β· Node 20 Β· JavaScript

  1. Open a terminal in the functions/ folder and run npm install
  2. Set your secret: firebase functions:secrets:set LEARNING_HUB_API_KEY
  3. Deploy: firebase deploy --only functions
  4. Paste the printed HTTPS URLs into the Settings webhooks panel
  5. Test: curl -H "X-API-Key: <key>" https://<region>-<project>.cloudfunctions.net/apiUsers
πŸ“ Source: functions/index.js in the project folder.

API Key Reference

Record your deployed key here for reference (admin view only)

⚠ This field is browser-local only. For production, store the key in Firebase Secret Manager via the CLI command above.