Skip to main content

Examples

This is a curated list of runnable Nexus applications. Each example lives in the examples/ folder of the repo and is wired into the same docker-compose workflow as the framework itself — boot it, hit the endpoints, read the logs, and modify it locally without touching your host PHP.

Each example demonstrates a specific combination of patterns, not just a single feature. After reading two or three, you have a mental library of what an actor system shaped like that looks like in PHP.

What the examples are for​

Examples are not tutorials and they are not reference manuals. They are concrete answers to questions you have probably already asked if you have worked with PHP HTTP services:

  • "How do I serialise per-aggregate writes without a global lock?" — see the wallet-app's LedgerActor.
  • "What does a multi-thread Swoole boot look like end-to-end?" — see the wallet-app's Boot/ tree.
  • "How do I borrow a pooled DB connection from a request without leaking it on a 404?" — see the wallet-app's middleware order and ConnectionScopeMiddleware.
  • "How is the actor system shut down cleanly when the container gets SIGTERM?" — see the wallet-app's SwooleThreadServer integration and the Swoole runtime page.

The current list​

ExampleWhat it showsKey features
Wallet appMulti-thread Swoole HTTP server, event-sourced wallet aggregates, per-owner Doctrine ledger writer, raw DBAL admin endpoint, graceful shutdown.Actor-per-owner, EntityBehavior, ConnectionPool, EntityManagerPool, #[Transactional], NexusLogger, single-writer guarantee, idle passivation, supervised restart.
Tic-tac-toeMultiplayer WebSocket game session per game id, React SPA client, lobby over REST, snapshot broadcast to all attached sockets.EntityBehavior aggregate, WebSocketChannelActor fan-out, sealed command interface, per-id single-writer, passivation on idle, worker-pool sharding.

Reading order​

Read examples in the order they appear above. The wallet-app is intentionally the densest — it touches almost every Nexus subsystem — and later examples will assume you have at least skimmed it. Tic-tac-toe layers WebSocket broadcast on top of the same EntityBehavior pattern, so read wallet-app first.

If you are here to copy a pattern, the "Key features" column is the index: pick the example whose features include what you need.

Running an example​

Every example has its own compose.yaml and is self-contained:

cd examples/<name>
docker compose up -d
docker compose logs -f app
docker compose down

The Composer dependencies under examples/<name> reference the in-repo packages so you are running the exact same source tree as your local working copy. Edit a file under packages/ and restart the example container to see the change.

Next steps​

  • Wallet app — the full multi-subsystem example.
  • Tic-tac-toe — WebSocket multiplayer with per-game single-writer.
  • Quick Start — build a counter actor from scratch.
  • Behaviors — understand the core behavior model the examples rely on.