Skip to content
rmssantosPublic

About

Frozen local edition of Examplar: certification practice, editor and free packs with no telemetry. Download and run locally; maintained online service at examplar.app.

Topics

Resources

Contributing

Stars

6 stars

Watchers

2 watching

Forks

Latest commit

 

History

217 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Examplar — frozen local edition

Examplar — local-first certification exam practice

Examplar is an open-source, local-first certification exam simulator. Practice in the browser with original questions, hands-on labs, and detailed review tools. This repository is the final standalone local edition, frozen on 8 September 2026. It remains available to download and fork. No account is required, and your progress stays on your device. Future development and content updates happen in the separately maintained online service; this snapshot receives no further updates.

Download the source ZIP · Separate online service · Read the privacy model

If Examplar helps you study or gives you ideas for your own local-first app, consider starring the repository. It helps other learners and contributors discover the project.

Why Examplar

  • Start immediately: open a free preview without creating an account
  • Practice realistically: timed sessions, multiple question types, and configurable pass scores
  • Learn from mistakes: detailed review, weak-area practice, and spaced repetition
  • Keep control of your data: progress and imported content remain in browser storage
  • Study anywhere: install it as a PWA and continue offline after the app is cached
  • Use trustworthy material: original educational questions based on public exam objectives, not dumps

The current library covers Microsoft Azure, Azure AI, Copilot Studio, Microsoft Fabric, AWS, and CompTIA certifications. You can also import or create your own packs.

What It Provides

  • Timed exam sessions with configurable pass scores
  • Standard, multi-select, sequence, drag-select, and Yes/No matrix questions
  • Study Mode with spaced repetition and weak-area practice
  • Attempt history, detailed review, and progress export
  • JSON and ZIP pack import
  • A browser-based question editor
  • Local image support
  • Light and dark themes
  • Installable PWA behavior and offline access after the app is cached

No account is required.

Local Edition and Online Exams

The free packs, editor, personal JSON/ZIP imports, and local progress work without an Examplar account. Local use does not send analytics. Keep the downloaded app and packs to practise independently of the hosted service.

The View complete exam online links lead to the separate paid service at https://examplar.app/exams/<exam-id>/, where current prices and access conditions are maintained. New purchases require an account and internet connection. They do not include an offline download, and the personal online licence does not decrypt or activate a pack in this repository.

Previous offline purchases still work: use Import previous offline pack in the exam information modal, or the normal file import, and enter the original pack decryption key when prompted. Do not enter a new online licence there.

The hosted service has its own account, licensing, and storage policy. The local storage descriptions below apply to this repository's simulator.

The official examplar.app service is deployed separately. This repository does not configure that domain or publish to GitHub Pages. Its validation workflow still builds and tests the standalone static distribution. To prepare your own static host, run python tools/build_pages_artifact.py --output _site and serve _site under your own domain; configure that host’s routing and TLS separately.

Privacy Model

Questions, selected answers, imported content, images, progress, and editor changes remain in browser storage.

This edition contains no analytics or telemetry client, ingestion configuration, tracking hooks, campaign storage, or ad-click forwarding, on any hostname. Local progress statistics remain available on your device. This applies to the final snapshot; earlier Git history and old downloads retain their original behavior.

The browser still requests app files from your local server. Following external study resources, GitHub, or online-exam links contacts that destination, which has its own privacy policy. Pack images are loaded from local or same-origin files, or from IndexedDB.

See PRIVACY-AND-STORAGE.md for the complete disclosure.

Quick Start

Download

Use Code → Download ZIP (or the ZIP link above), extract it, install Python 3.10 or newer, and open a terminal in the extracted folder. Run python server.py, then open http://localhost:8000. Keep that folder: it is the independent local app. No Node install or build step is required to use it.

Local Server

git clone https://github.com/rmssantos/examsim.git
cd examsim
python server.py

Open http://localhost:8000.

The local server enables automatic pack discovery and the editor's local image upload endpoint. It binds to the loopback interface by default.

Direct File Use

Opening index.html directly can work for basic use, but browser security rules limit automatic folder discovery and some image workflows. ZIP import is intentionally unavailable under file:// because extraction runs in an isolated Web Worker; run python server.py and open http://localhost:8000 for ZIP packs. JSON import and basic practice can still work in direct-file mode.

Exam Packs

Public packs live under:

user-content/exams/<exam-id>/

Each directory contains the required question-data JSON, pack metadata, an integrity manifest, and optional images. The question and metadata schema defines the exact filenames and structure.

Users can also import:

  • a JSON question array;
  • a combined JSON object containing id, metadata, and questions;
  • a ZIP containing the required question-data JSON, optional metadata, and optional images.

ZIP import requires a supported local HTTP server or a secure self-hosted origin. It does not run when index.html is opened directly as a file:// URL.

Imported packs and their progress are stored in that browser profile. They are not uploaded to the public repository or server.

Detailed formats:

Built-In Editor

Open editor.html to create or edit a pack.

The editor can:

  • add and update supported question types;
  • edit pack metadata;
  • import and export JSON;
  • preview questions;
  • copy image files into a local pack when running through server.py.

Browser edits affect only the current browser. Export changes to keep a backup or redistribute your own fork under the existing licence. This frozen snapshot receives no further upstream code or content updates.

Repository Layout

.
|-- index.html                 Homepage and exam library
|-- exam.html                  Exam and Study Mode runtime
|-- editor.html                Question editor
|-- privacy-and-storage.html   User-facing privacy page
|-- server.py                  Optional local HTTP server
|-- assets/                    CSS, JavaScript, media, and vendored dependencies
|-- exams/                     Generated SEO landing pages
|-- tools/                     Generators, validators, and pack utilities
|-- tests/                     Python and browser regression tests
|-- docs/                      Public technical documentation
`-- user-content/exams/        Intentionally published exam packs

Content Policy

This repository contains original educational practice content. It must not contain:

  • copied live exam questions or unauthorized assessment collections;
  • proprietary packs without redistribution rights;
  • private paid-pack sources or delivery artifacts;
  • license keys, buyer data, analytics exports, or internal commercial records;
  • personal browser data or local development notes.

Local/private material belongs outside Git history. The repository ignores .local/ for that purpose.

Examplar is not affiliated with or endorsed by Microsoft, Amazon Web Services, or other certification vendors. Certification names and trademarks belong to their respective owners.

Development

Requirements:

  • Python 3.10 or newer
  • Node.js 22 or newer

Install browser test dependencies:

npm ci

Run validation:

python tools/validate-exam-packs.py --root user-content/exams
python tools/validate-exam-packs.py --root user-content/exams --check-manifest
python -m unittest discover -s tests -p "test_*.py"
node --check service-worker.js

Run the browser smoke test with a local static server:

python -m http.server 4173 --bind 127.0.0.1
npm run test:browser

Generated exam pages must stay synchronized with metadata:

python tools/generate-exam-pages.py

See CONTRIBUTING.md for retained fork-maintenance guidance.

Security

Treat imported JSON, ZIP files, metadata, filenames, URLs, and browser storage as untrusted input. Security issues should be reported without attaching proprietary packs, credentials, or personal data.

Optional self-hosting response-header guidance is documented in docs/SECURITY-HEADERS.md.

License

The simulator source is available under the MIT License. Authored practice questions, explanations, lab guides, editorial metadata, and original branded media follow the separate Examplar content terms. Third-party assets retain their own terms.

About

Frozen local edition of Examplar: certification practice, editor and free packs with no telemetry. Download and run locally; maintained online service at examplar.app.

Topics

Resources

Contributing

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages