Version 3.11.0 ยท All versions

All pages

These are the docs as released with Solid Memo 3.11.0. Read the latest docs.

Objectives

What Solid Memo is for, who it is for, what it is not for, and the principles the code keeps, each with where it is enforced.

Mission

Solid Memo helps people remember what they learn, with flashcards that come back just before they would be forgotten, while what they study stays in a pod of their own choosing, not with the app.

Goals

Each goal, and the pages and code that carry it out:

  1. Learn for the long term. Cards are scheduled by SM-2, spaced repetition's best-known algorithm, so each comes back at a longer interval the better it is known. srs.md, sm2.ts, scheduling.ts.
  2. Keep your data in your own pod. Everything you study is stored in your Solid pod, read and written from your browser. Solid Memo has no server and no accounts of its own. data-model.md, authentication.md, architecture.md.
  3. Try it first. A guest studies in a pod kept in the browser, and can move that study into a pod later. guest-mode.md, onboarding.md.
  4. Start from ready-made decks and courses. A library of decks, some of them courses that teach before they ask, each version described with open standards and under its own license. deck-library.md, courses.md, decks/.
  5. Write and share your own. Solid Memo Studio manages decks in bulk, and writes, checks and publishes releases to a pod for others to add. studio.md.
  6. Data other apps can read. Data is RDF in open vocabularies, with Solid Memo's own terms and shapes published, versioned, at their addresses. standards.md, vocab.md, shapes.md, validation.md, migrations.md.
  7. In your language. The app speaks English, Swedish, Korean, German, Spanish and French, and shows text in the languages it is written in. i18n.md.
  8. Safe whatever the data holds. Text from a pod or a library is shown so that no data can run code in the app. markdown.md, validation.md.
  9. Run anywhere. The site is static files that any web host can serve. deployment.md.

Who it is for

What it is not for

Principles and where they are enforced

No public policy applies to Solid Memo (policy.md), so its objectives come from the project itself. Each principle below is checked by code, not left to good intentions:

PrincipleWhere it is describedWhere it is enforced
Every line of code is testedtesting.md100% coverage per package, in vitest.shared.ts, run by npm run check
Each layer depends only on the layers it mayboundaries.md, architecture.mdcheckBoundaries.ts, npm run check:boundaries
Data has the shape it says it hasshapes.md, validation.mdthe shapes, checked in the app and by npm run library:check; pySHACL in CI (shacl_crosscheck.py)
A published deck version never changes under its readersdeck-library.mdnpm run library:check -- --base <ref> in CI's library job (ci.yml) fails on a published version edited or removed (baseProblems in deckLibrary.ts); the continuity rules fail on a card dropped
Every library deck says how it may be reuseddeck-library.mdthe noLicense rule in libraryRules.ts, run by npm run library:check
Data from a pod cannot run codemarkdown.mdthe Content Security Policy, checked by build.test.ts
Every language has every messagei18n.mdi18n.test.tsx
The scheduler does what its guide sayssrs.mdsm2.test.ts
It works with real Solid serverstesting.mdthe end-to-end tests against several servers, in CI
Turtle is written one wayarchitecture.mdnpm run format:turtle:check
The docs and the English messages use one spelling, Americanstyle.mdcspell.config.yaml, npm run lint:spelling, in npm run check

Language

English is the authoritative language of the code, its documentation, commits and issues; the docs are written in American English. The app's messages in other languages are translations of the English (i18n.md).