NeoWiki is a collaborative knowledge management system on top of MediaWiki and graph databases.
NeoWiki is not production ready yet. We support two installation use cases:
- A demo environment for evaluation and experimentation. See installation.md.
- A development environment with configuration and tools for enhancing NeoWiki. See the "Development" section below.
See docs/, especially docs/concepts/glossary.md.
Prerequisites:
- Docker (or a compatible runtime such as Podman)
- Docker Compose v2+ (with the
docker composesubcommand, not the legacy standalonedocker-composev1. Verify withdocker compose version) - GNU Make
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 data
make import-demo-data # load the latest demo data, overriding your changesFor 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 the prebuilt try-it-out stack or server deployment with Caddy, see Installation.