Version 3.13.0 · All versions

All pages

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

Running your own instance

Anyone may run a copy of Solid Memo: the code is MIT-licensed (LICENSE), and the site is plain static files. Hosting it means serving those files. A learner's data stays in their own Pod, never on your host, so a copy holds no user data and needs no database.

A learner can use your copy and https://solid-memo.com/ on the same Pod: both read and write the same data (data-model.md). That is why a few names must stay as they are (below).

1. Fork or clone

Fork https://github.com/solid-memo/website, or clone it anywhere:

git clone https://github.com/solid-memo/website.git memo
cd memo
npm ci

It needs Node.js 24 or later (engines in the root package.json; CI uses the version in .nvmrc), and Chromium, which the build and the checks draw the docs' diagrams in: npm run browsers installs it once, without sudo (on Linux, a machine that lacks the system libraries it needs gets them with sudo npx playwright install-deps chromium). npm run check runs the type checks and the unit tests (testing.md).

2. Configure

Give the build your name, your repository and, if you like, your own Pod providers and deck library. Copy apps/web/.env.example to apps/web/.env and uncomment what you change:

VITE_APP_NAME=Example School Cards
VITE_REPO_URL=https://codeberg.org/example/memo
VITE_POD_PROVIDERS=[{"id":"school","name":"Example School Pods","oidcIssuer":"https://pods.school.example/"}]

configuration.md describes every setting, its default and what it does not reach.

3. Build

npm run build

The site is apps/web/dist/: the app, the Studio, the vocabulary and the shapes (ns/), the deck library (decks/), the vendored profiles (vendor/) and these docs (docs/). Without Chromium, the build fails; DOCS_DIAGRAMS=skip npm run build builds the docs without their diagrams (configuration.md). npm start builds and serves it at http://localhost:4173 to try it first.

4. Host it anywhere

Upload the contents of apps/web/dist/ to any static host, at a domain's root or in a subfolder (https://example.org/memo/). It needs no rewrite rules and no per-host settings (deployment.md), but it must be served over HTTPS for login to work.

On GitHub Pages, a fork deploys with the same workflow as this site (deployment.md), which deploys only released versions, so the fork releases its own with a deploy key of its own (releasing.md). It deploys to https://<user>.github.io/<repository>/, or to a domain of its own (deployment.md). Its docs serve each of its own releases at /docs/X.Y.Z/; the upstream project's tags, which a fork has too, have no archive on the fork's releases, so the list of versions links their docs in the repository (deployment.md).

5. Your own deck library

The app lists one deck library (deck-library.md). There are two ways to make it yours:

Either way, a user can still add a deck published anywhere else, from its link (deck-library.md).

6. What you edit by hand

A few files describe this deployment and are not settings. Change them in your copy:

FileWhat it says
apps/web/index.htmlThe site's address, as absolute URLs on https://solid-memo.com/: the canonical link, og:url, og:image and the JSON-LD url, @id and image; and the description. Its links to the repository follow VITE_REPO_URL (configuration.md).
apps/web/public/about/index.htmlWhat Solid Memo is, under its name, with its address on https://solid-memo.com/ and links to this repository, which VITE_REPO_URL does not reach. Rewrite it for your copy.
apps/web/public/social-preview.png, the faviconsSolid Memo's wordmark and logo.
apps/web/public/screenshots/The app under Solid Memo's name, at https://solid-memo.com/, which the README, publiccode.yml and the About page show. Take your own (npm run screenshots, testing.md), or leave them out.
CNAMEThis site's domain on GitHub Pages (deployment.md), which the build writes sitemap.xml and robots.txt's Sitemap: line on. Write your own domain into it, or delete it: without it, the build writes no sitemap.
publiccode.ymlWhat Solid Memo is, for software catalogs: this repository, the site's address on https://solid-memo.com/ and its docs there (documentation). Rewrite it for your copy; a release writes its version and date into it (releasing.md).
README.mdThis project's own description and links.
docs/These docs, which the build publishes at /docs/: they describe this deployment, its domain, its repository and its releases. Their links into the repository follow VITE_REPO_URL (configuration.md); their words do not. Edit them, or leave them as the upstream project's.

What stays the same

These names are part of the data, not of one deployment. Every build must keep them, or it can no longer read what other builds wrote in a learner's Pod, nor they what it wrote:

NameWhereWhat it names
https://solid-memo.com/ (SITE)ns.ts, shacl_crosscheck.pyThe vocabulary, the shapes and the library's decks. Pods store these IRIs.
solid-memo/guest.ts, trial.tsThe folder an instance gets in a Pod.
solid-memo:* keyspackages/browser/src/, solidSessionGateway.ts, the theme script in index.htmlWhat the browser keeps: the language, the theme, the update journal, the hash a login set off from.
solid-memo-guest-podindexedDbResourceStore.tsThe guest's Pod in the browser (guest-mode.md).

The browser keeps its data per origin, so the last two never mix between your site and this one; they stay only so that one codebase serves both.

The IRIs name solid-memo.com whichever site serves them, but your copy reads the documents they name from its own address (siteFetch), not from solid-memo.com.