NeoWiki is a collaborative knowledge management system on top of MediaWiki and graph databases.
See docs/, especially docs/concepts/glossary.md.
To work on NeoWiki (edit code, run tests, see changes live), bring up the bundled dev stack:
make devThis builds a dev-mode image, brings up the stack (mediawiki, db, neo, test_neo, node
watcher, mailcatcher), runs first-time install and seed, and waits until the wiki is
reachable. It prints the URL when ready (the default is http://localhost:8484 but
the actual port is auto-allocated; see Reserved ports).
Mailcatcher web UI is at the port make dev printed (default 8025,
configurable via MAILCATCHER_PORT in Docker/.env).
The node sidecar runs npm run build:watch, so TypeScript changes under
resources/ext.neowiki/ rebuild automatically.
To also expose Neo4j Browser and the Bolt endpoint to the host (single-worktree use),
use make dev-tools instead. URLs print when the stack comes up.
make phpunit # full PHPUnit suite
make phpunit filter=Foo # single test class
make cs # phpcs + phpstan
make tsci # vitest + build + lint
make bash # shell into the mediawiki container
make logs # tail logs
make reset # wipe DB + Neo and reseed demo dataFor all targets, run make help.
Each clone or worktree is a self-contained stack. Run make dev from any NeoWiki
checkout and it will allocate its own port and project namespace, so multiple worktrees
can run side by side without collision. See Reserved host ports
for the auto-allocation ranges.
To override the MediaWiki port: make dev port=8488 or MW_SERVER_PORT=8488 make dev.
Create Docker/LocalSettings.local.php (gitignored) for per-worktree overrides. Common
uses:
- Loading additional MediaWiki extensions for an integration test
- Custom debug toggles
- Hook overrides for a specific feature branch
Example:
<?php
wfLoadExtension( 'SomeExtension' );
$wgDebugLogGroups['neowiki'] = '/tmp/neowiki-debug.log';For a prebuilt try-it-out stack or server deployment with Caddy, see
Docker/README.md.