Skip to content
Alpha — web build runs

Fivefold

An offline-first micro-learning app for AI literacy. Each lesson is a handful of short cards, one optional practice note, a single quiz you can retry, and a takeaway — about five minutes end to end. No account, no server, no analytics, and a Content Security Policy that makes the app physically unable to phone home.

The web build runs as a single self-contained file with 103 lessons authored. The Android and iOS versions are scaffolded but not yet released, and all lesson content is still awaiting editorial review.

Fivefold
Web (single file)Web (PWA)AndroidiOS

[In the box]

What it actually does

  • 103 short lessons across 18 topics, authored as validated JSON
  • A Content Security Policy of connect-src 'none' — it cannot make a network request
  • Offline coach that answers only from the current lesson and admits when it can't
  • Practice notes up to 4,000 characters, exported as plain text
  • Seven free topics and eleven paid packs, with a full purchase adapter
  • One codebase, three builds: single HTML file, installable PWA, native shells
Web (single file)Web (PWA)AndroidiOS

By the numbers

Status
Alpha — web build runnable
Lessons
103 across 18 topics
App code
~1,158 lines JavaScript
Content
6,178 lines of JSON
Tooling
772 lines across 13 scripts
Assertions
43
Free topics
7
Paid packs
11 (adapter only, not live)
Single-file build
257 KB
Network requests
None, by CSP

[Features]

Inside Fivefold

Every item below is implemented in the codebase, not planned for a future release.

Four-stage lesson reader

Concept cards, an optional practice note, a multiple-choice quiz with unlimited retry and feedback, then a takeaway. Roughly five minutes end to end.

Search across every lesson

Live full-text search over topic titles, subtitles, categories and age bands, auto-grouped by category with a live result count.

An offline coach that stays in its lane

TF-IDF keyword retrieval scoped to the current lesson, with four canned prompts and a free-text box. Every answer is attributed to the card it came from, and anything uncovered gets an explicit refusal.

Practice notes and notebook export

Up to 4,000 characters with autosave, a live character counter, and a plain-text download of every note you have written.

A CSP that proves the privacy claim

connect-src 'none'. Advertising and tracking are not merely absent, they are impossible — the runtime would refuse to make the request.

Freemium with a real paywall

Seven free topics and eleven paid packs behind a complete purchase adapter. The web build reports purchases as unavailable rather than pretending.

Backup, export and corruption recovery

A versioned local backup you can export and restore, and a recovery screen that offers raw data export or a temporary session instead of quietly deleting anything.

Separate kid and adult paths

An audience toggle swaps the palette, corner radii, hero and mascot, and topic visibility is filtered per audience.

PWA, single file, and native

The same code builds to a self-contained HTML file you can open offline, an installable PWA with a cache-stamping service worker, and Capacitor shells for Android and iOS.

43 assertions and an offline test

A test suite covering the engine, content, coach, render and storage adapter — plus a check that loads the PWA with the server stopped.

[Architecture]

How it is built.

The decisions that shaped the codebase, and what each one buys.

01

The CSP is the product claim

'No tracking' is usually a promise. Here the Content Security Policy sets connect-src to 'none', so the runtime would refuse to make a request even if code tried to.

02

Content is data, validated in CI

Lessons live in JSON with a validator that rejects duplicate ids, broken source references and paid topics with no matching pack. Adding a topic is a documented three-step, zero-code change.

03

Failure opens a door instead of erasing

If stored state cannot be parsed, the app locks into a recovery screen offering retry, raw export, a temporary session or a reset — and never deletes the original data on its own.

04

One codebase, three artefacts

A hand-rolled build script inlines CSS, JS and content into a single openable HTML file, a PWA bundle, and native shells. No framework, no bundler, no runtime dependencies.

[Who it is for]

Built for

  • Adults with no technical background who feel anxious about AI
  • People who want AI skills for work without a course
  • Parents and kids — a separate audience path with its own palette and mascot

[Non-negotiables]

The rules we held

  • No account, no analytics, no remote fonts, no tracking scripts
  • No streak pressure and no invented study minutes
  • The coach refuses to answer rather than guessing
  • Corrupted progress opens a recovery screen instead of silently wiping data

[Stack]

Built with

Vanilla JavaScript (ESM)Node.js build toolingCapacitor 8JSON content pipelinelocalStorageService WorkerCC0 Kenney-free original art

Delivered

  • Onboarding, library, topic, explore, saved, progress and settings screens
  • 103 authored lessons with a validated JSON content pipeline
  • Offline coach with attributed answers and explicit refusals
  • Practice notes, notebook export, backup and restore
  • PWA with a cache-stamping service worker and hardened CSP
  • Purchase adapter and paywall UI (no store keys configured)
  • Android and iOS Capacitor shells with icons and splash assets

Not done yet

Listed rather than hidden.

  • Editorial review of all 103 lessons — every topic is still marked draft
  • Building and signing the Android and iOS releases for store submission
  • RevenueCat keys and store products, so the eleven paid packs can actually be bought

[Timeline]

How it got here.

Where this came from, in order.

    1

    Origin

    Five minutes, one idea

    The format is deliberately short: one idea per card, a quiz, a takeaway. The whole product is designed around the length of a queue.

    2

    Build

    Content as a validated pipeline

    Rather than hardcoding lessons, all 103 ship as JSON behind a validator, so content errors fail a check instead of reaching a reader.

    3

    Hardening

    Prove the privacy claim structurally

    A connect-src 'none' policy, no analytics, no remote fonts, and a coach that answers only from the current lesson and says so when it cannot.

    4

    Now

    Content review before release

    The web build works and the native shells are scaffolded. What is missing is human editorial review of the lessons and store signing — not more code.

[FAQ]

Common questions.

The questions we would expect to be asked.

Can I try it without installing anything?

The single-file build is self-contained — around 257 KB of HTML that opens straight from disk with no server, no toolchain and no network. The Android and iOS builds are not released yet.

Is the coach an AI service?

No, and the app says so on screen. It is keyword retrieval scoped to the lesson you are currently reading, it attributes every answer to the card it came from, and it explicitly refuses anything the lesson does not cover.

Why is there no account?

Because it would not need one. Progress is local to each install, backup and restore are a file you control, and the Content Security Policy means there is nowhere for a server to receive it.

Can I buy the paid topics?

Not yet. Eleven paid packs and a full purchase adapter are implemented, but no store products or RevenueCat keys are configured, so the web build reports purchases as unavailable rather than pretending.

The rest of the catalogue

[Get in touch]

Questions about Fivefold?

Want to know more about Fivefold — timelines, availability or how it works under the hood? Send us a note.

Taking on select projects for 2026