Roadmap
What's shipped and what's planned across the Arch Reactor suite.
Arch Reactor is two tools on one engine: archview (visualize) and arch-diff (structural diff). Roadmap for each below.
archview — shipped
- Frameworks — generic router extractor (gin, echo, fiber, chi, httprouter, …), net/http, gorilla/mux, gRPC, GraphQL (gqlgen), ConnectRPC, WebSocket entry.
- Auto-layer — chain-based, naming-agnostic layer inference
(
AutoLayer, on by default). - Outbound ports (
ShowPorts) and bus / mediator detection (DetectBuses). - Layer-violation linter (
LintLayers). - Layout persistence — dragged positions and collapsed modules survive a reload (with a Reset button).
- Microservice view (
SystemView) — a multi-service repo reads as one connected system: services as swimlanes, with cross-service gRPC calls stitched across the wire asrpcedges. - Quality: trivial-helper filtering, route group-prefix joining, generated-file
skipping (
.pb.go, sqlc, …), layer-first module grouping.
archview — planned
- More cross-service transports — extend SystemView stitching beyond gRPC to HTTP clients, Kafka / NATS (publish ↔ subscribe by topic), keyed the same way.
- Topology sources — read Kubernetes / docker-compose manifests to enumerate services and resolve HTTP targets to a service.
- Outbound / external detection — surface what a repository actually talks to (Postgres, an HTTP API, Redis, a queue) as its own node.
- Search & filter — find a node; toggle layers / modules.
- Trace a path — click an endpoint to highlight its full downstream chain.
- Live reload — re-analyze on source change.
- Reach — GraphQL nested resolvers, WebSocket per-message routing, more routers.
- Prod-baked mode (
go:generate+go:embed) to run inside a deployed binary; export to PNG / SVG / Mermaid / DOT; JetBrains editor links.
arch-diff — shipped (v0.1.0)
- Structural diff across two git refs: new / removed layer-crossing edges, changed (body hash), added / removed nodes — keyed by location-independent IDs, so moving lines produces no diff.
- Dead-code, tied to the change — newly dead (orphaned by the PR) and
revived (dead → reachable); plus a
--deadfull audit grouped by layer. - Roots from config: routes,
main,exported_api(library mode), and akeepallowlist for reflective entrypoints; ignore globs for test/mock/vendor. - Mermaid subgraph of the changed region, dead nodes styled distinctly.
- GitHub Action — one PR comment, edited in place on each push.
- SHA cache — the base branch graph is built once and reused.
arch-diff — planned
- Rename / move detection — surface a moved symbol as one node instead of an add + a remove (similarity matching).
- Path-to-sink — flag a new path from an entrypoint to a sensitive sink (not just boolean reachability).
- Policy gating — an opt-in
arch-lintmode that can fail a build (arch-diff itself stays report-only).
Beyond Go
- archview-hono — a TypeScript / Hono port (ts-morph based) at parity with the Go engine: Hono / Express / Fastify / Elysia / NestJS / tRPC, ports, CQRS mediators, auto-layer, linter. Shares this UI and graph schema.
- archview-net — a .NET port (Roslyn-based) sharing this UI, graph schema, and docs. Planned as a separate library.
This page reflects the current plan and shifts as things ship.