Skip to content

Latest commit

 

History

61 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Clariora

Production deployment: https://clariora.com.au
Status: production-ready (release gate PASS, live TMA health OK, CI green on main)

An offline-first exam simulator and study suite for CompTIA A+ Core 1 (220-1201), Core 2 (220-1202), and Microsoft Azure AZ-900. It ships as a progressive web app, a Windows / macOS / Linux desktop app built on Electron, a Telegram Mini App, and a terminal exam runner in Python.

Built by Datacentre Academy for technicians training for datacentre and enterprise IT support roles. Licensed under the GNU Affero General Public License v3.0.

CI License: AGPL v3 Version Live

Screenshots

Captured from the Windows desktop build at 1440 by 900 with node tools/capture_screenshots.js.

Home Study drawer
Home dashboard with readiness ring, daily plan, shortcuts and mock exams The Study section of the More drawer
Exam runner Submit dialog
A question in the 90 minute exam runner with the question matrix In-app confirmation before an exam is scored
Results Startup
Scaled score, pass mark and domain breakdown after an exam First launch screen
Update available Update ready
The software update card offering to download a new version The gold Update ready button in the header once a version is downloaded

What it does

Exam engine that mirrors the real test

  • Dual-track: CompTIA A+ Core 1 / Core 2 timed mocks, plus Microsoft Azure AZ-900
  • 90 questions in 90 minutes for A+ cores, sampled to the official domain weightings
  • A bank of 1,130+ A+ questions (plus a dedicated AZ-900 bank), each with explanation, distractor analysis, and mapped study media where available
  • Scaled scoring from 100 to 900 with the real pass marks (675 Core 1, 700 Core 2, 700 AZ-900)
  • Single answer, multiple answer, matching, ordering and performance-based question types
  • Flag for review, distractor strike-through, question matrix, pause and resume, Pearson-mode scratchpad
  • Domain drills, missed-question drills, notes/flags drills, and an adaptive practice loop that targets weak objectives

Study tools

  • A study library built from the objectives, the academy's own notes and open course material
  • Spaced repetition memory mode for facts, ports and command syntax
  • Objective tracker and readiness score against every sub-objective
  • Personal takeaways, mnemonics, and a central study notebook with Markdown export
  • High-yield cram sheet (ports, troubleshooting flow, cabling, Wi-Fi, RAID, CLI)
  • Ghost Coach, an optional AI tutor on the Cloudflare edge (rate-limited free surface + paid rails)

Community analytics (edge)

  • Live community item stats from D1 when sample size is large enough (no synthetic fake %)
  • Similar-questions on review via offline neighbor file plus optional Vectorize / Workers AI
  • Nightly point-biserial discrimination job for bank quality flags

Proof of mastery

  • A hash-chained local ledger records every session so progress cannot be edited after the fact
  • Exportable evidence of outcomes for instructors and employers

Runs anywhere

  • Live at clariora.com.au on Cloudflare Workers (assets + API on the same origin)
  • Telegram Mini App via @ClarioraBot
  • In-app updates on desktop: the app checks GitHub Releases, shows what is new, and installs it when you press the button
  • Installable PWA with a service worker for full offline use
  • Electron desktop builds for Windows (installer and portable), macOS (DMG) and Linux (AppImage and deb)
  • Optional cloud sync through Supabase, off by default

Quick start

Web edition, no install:

npx serve .

Then open the printed URL. The app entry point is index.html.

Desktop edition:

npm install
npm start

Linux desktop packages come from the GitHub Releases page or npm run package-linux on a Linux machine; see docs/LINUX_RELEASE.md.

Terminal edition:

python practice_exam.py

Repository layout

Path Purpose
index.html, js/, css/ The web application shell, engine modules and the black and gold theme
main.js, preload.js Electron main process and the sandboxed preload bridge
exam_data.json The compiled question bank (generated, do not edit by hand)
study_library.json The compiled study library (generated)
objectives_data.json Canonical objective map for both exams
tools/ Build, validation, release, test and deploy scripts
_bank/shards/ Source shards that the bank builder merges into exam_data.json
notes/ Comprehensive certification study notes, recall tables, and domain guides in Markdown
docs/ System architecture, release, deployment, monetisation and sync guides (see docs/ARCHITECTURE.md; big-data edge plan in docs/BIG_DATA_IMPLEMENTATION_PLAN.md)
supabase/ Schema for the optional sync backend
workers/ Cloudflare edge proxy, token budget, and AI orchestrator
functions/ Firebase Cloud Functions v2 and security services

Building the content

The question bank and study library are generated. Edit the shards or the notes, then rebuild:

python tools/build_bank.py
python tools/validate_bank.py --bank exam_data.json
python build_study_library.py

The validator enforces the schema in BUILD_SPEC.md: exact domain strings, objective codes that exist in the blueprint, distractor analysis for every wrong option and a video reference per objective where one exists.

The curriculum viewer reads curriculum_data.js, which is generated from local lab documents, slide decks and videos. Those source files are not redistributable and are not in this repository, so the viewer shows a rebuild notice until you run python tools/build_curriculum.py against your own copies.

Testing

npm run check
npm test
python tools/validate_bank.py --bank exam_data.json

npm test runs every self-contained script in tools/test_*.js and tools/verify_*.js. CI runs the same three commands and also refuses any commit that tracks secrets, certificates or third-party media.

python tools/release_gate.py runs all of the above plus the typography, version and packaging checks that must pass before a build ships. node tools/capture_screenshots.js refreshes the README screenshots from the packaged desktop app.

Releasing

Follow docs/RELEASE_CHECKLIST.md. The version lives in one place, release.config.json, and the installer scripts write it into package.json.

Target Command Guide
Windows npm run package-win docs/WINDOWS_RELEASE.md
macOS npm run package-mac docs/MACOS_RELEASE.md
Web python tools/deploy_cloudflare.py docs/CLOUDFLARE_FREE_DEPLOYMENT_GUIDE.md

Code signing reads its password from the CSC_KEY_PASSWORD environment variable. Cloudflare and R2 credentials go in .env, copied from .env.example. Nothing secret is ever committed.

Configuration

File What it controls
js/entitlements-config.js Free tier limits and the paid tier switch. Enabled for production free/paid gates.
js/groq-config.js Ghost Coach model and endpoint. The API key is supplied at runtime, never stored in the repo.
js/sync-config.js Supabase project URL and anon key for optional cloud sync.
js/telemetry-config.js Opt-in usage telemetry. See docs/ANALYTICS.md.
js/media-config.js Where the desktop app downloads the optional course video pack from.

Contributing

Read CONTRIBUTING.md before opening a pull request. The short version: keep the style plain, no em dashes or emoji, run the tests, and never commit media you do not have the right to redistribute.

Security issues go through SECURITY.md, not the public issue tracker.

License

Copyright (c) 2026 Datacentre Academy and contributors.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for the full text.

If you run a modified version of this software as a network service, the AGPL requires you to offer the corresponding source to its users.

Third-party content and its licensing is listed in THIRD_PARTY_NOTICES.md. CompTIA and A+ are registered trademarks of CompTIA, Inc. This project is not affiliated with or endorsed by CompTIA.

About

Production-ready offline-first exam simulator for CompTIA A+ Core 1/2 and Azure AZ-900. PWA, Electron, Telegram Mini App. Live at clariora.com.au. AGPL-3.0.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages