Monorepo for ZetaWiki services.
svelte/: main frontend applicationgoapp/: primary HTTP server for/,/api/*,/auth/*, background and scheduled tasksw/: MediaWiki coremwz/extensions/ZetaExtension/: custom MediaWiki extensionmwz/skins/ZetaSkin/: custom MediaWiki skin
/-> Go app (and frontend)/api/*-> Go app API routes/auth/*-> Go app auth routes/wiki/*,/w/*-> MediaWiki stack
- Agent execution guide:
AGENTS.md - GoApp development and task system:
docs/goapp.md - Configuration (environment variables, own vs injected files):
docs/config.md - Redis roles (persist / volatile):
docs/redis.md - Frontend apps, skin islands and linking user text (linkify, linkifyText):
docs/front.md
The development image is the dev stage of the Dockerfile:
docker build --target dev -t zengine-dev .Inside the container, after cloning, switching branches, or changing dependencies, synchronize the checkout-specific dependencies without changing Git state:
./hack/dev-syncThe command reuses pnpm and Go caches under tmp/ (tmp/.pnpm-store,
tmp/.runtime-cache/). Database migrations are not run automatically; review
pending migrations and run ctl migrate when appropriate.
mwz/extensions.yaml lists the third-party MediaWiki extensions installed into
the image and where they come from (repo and tag); mwz/extensions.lock pins
the installed commits. mwz/settings/BaseExtensionSettings.php loads
them (and the bundled extensions and ZetaExtension); site-specific
ones (AbuseFilter, AWS, MailAPI, Score) are loaded by the deployment's
SiteExtensionSettings.php (see docs/config.md).
make extensions-lock # after editing the list, or to pick up new commits; commit the lock
make composer-lock # after adding/removing installed extensions; commit the lock