Almanack Root https://almnck.com/
  • Python 52.3%
  • JavaScript 30.5%
  • CSS 6.8%
  • Shell 4.2%
  • HTML 3.8%
  • Other 2.3%
Find a file
Danny O'Brien 46166044c2
All checks were successful
verify / verify (push) Successful in 36s
Push LFS objects from the pre-push hook
2026-09-12 23:32:41 -07:00
.claude Add a ledger skill 2026-09-12 22:17:05 -07:00
.forgejo/workflows CI: fetch LFS objects in the verify checkout 2026-09-11 21:08:36 -07:00
.pi Add pi agent config pointing to .claude/skills 2026-03-09 23:27:56 -07:00
api Tests: assert each signed literal matches its route 2026-07-26 23:10:49 -07:00
assets Celestial: add 2026-07-25 and 2026-07-26 sun/moon, point latest at 07-26 2026-08-12 15:34:05 -07:00
bin Push LFS objects from the pre-push hook 2026-09-12 23:32:41 -07:00
doc Docs: correct runner timings 2026-09-12 22:10:59 -07:00
docs Remove the justif A/B toggle; justif just runs on load 2026-07-25 22:49:33 -07:00
editorial Ideas: add Pick Your Galaxy; cross-link hand-waving and Chironomia 2026-08-20 14:58:59 -07:00
llc Restore redacted tax filings 2026-09-12 23:26:48 -07:00
src client: sign the v2 endpoint-bound message; POST /me 2026-07-26 00:24:57 -07:00
.age-recipients Kropotkin article: FQA margin box, woodcut portraits, footnotes 2026-02-16 23:24:09 -08:00
.crates.toml fix: wait for noble crypto libs before initializing identity 2026-01-17 16:29:32 -08:00
.crates2.json fix: wait for noble crypto libs before initializing identity 2026-01-17 16:29:32 -08:00
.gitattributes Encrypt EIN filing 2026-09-12 23:15:45 -07:00
.gitignore Add .superpowers/ to .gitignore 2026-03-20 16:12:48 -07:00
CLAUDE.md Correct the documentation link checker in the tech stack 2026-09-12 22:10:59 -07:00
CONSENSX.md Document the September technical audit 2026-09-08 22:39:14 -07:00
Makefile Add a ledger importer that drafts entries from the bank 2026-09-12 22:17:05 -07:00
pyproject.toml Add layout-invariants test harness with tunable thresholds 2026-03-10 01:53:38 -07:00
README.md Add missing trailing newlines at end of files 2026-07-15 23:10:08 -07:00
uv.lock chore: update uv.lock for skyfield dependency 2026-02-18 15:48:59 -08:00

Directory structure

bin -- small scripts for managing the stuff below
src -- codebase for generating website or conducting process. Anything bigger than a (small) script.
assets -- IP, including incoming articles, images, currently edited work, final products.
web -- the contents of our (static, public) website.
secrets -- passwords, PII, etc. Assume everything else could be made public. If it would be existentially bad for it to leak, encrypt it, and put it here.
doc -- documentation of processes, ideas, memos, etc.
llc -- corporate documents, financial ledger, business running.
.venv -- python environment for this whole kiboodle.

Quick Start

From a fresh clone:

make bootstrap        # Create venv, install deps, run migrations
source bin/a-activate # Activate the environment
make serve            # Start Django dev server on port 1969

Requires uv for dependency management.

Working Environment

To reactivate an existing environment:

. bin/a-activate

Editor-Only Content

Some content in editorial/inbox/ is encrypted so only editors can read it. This is for unpublished drafts and works-in-progress—not for secrets or confidential information (those belong in secrets/).

Why encrypt drafts?

  • Upcoming articles shouldn't be publicly visible before publication
  • Contributors may share work that isn't ready for the world yet
  • The rest of the repo can remain public without leaking unfinished writing

How it works

We use md-age for transparent encryption. Files with this frontmatter are automatically encrypted in git:

---
age-encrypt: yes
age-recipients:
  - git:assets/keys/editors
---
Your markdown content here...

The git:assets/keys/editors reference points to a file listing editor public keys. When you check out the file, it's automatically decrypted (if you have a matching private key). When you commit, it's re-encrypted.

Setup

Run bin/a-setup-key to configure everything automatically:

bin/a-setup-key

This script:

  • Creates an Ed25519 keypair (~/.ssh/almanack-age) compatible with both SSH and age
  • Configures git to use md-age filters for transparent decrypt/encrypt
  • Adds SSH config for the almnck git server alias
  • Adds your public key to assets/keys/editors and commits it

After running, add the printed public key to your Forgejo account at https://code.almnck.com/user/settings/keys to complete git server access.

Adding a new editor

When a new editor runs a-setup-key, their key is added to assets/keys/editors. Then run md-age git rekey to re-encrypt all protected files with the new recipient.

Current editors

See assets/keys/editors for the list of public keys with access.