Files
gridpilot.gg/docs/architecture/website/WEBSITE_DI_RULES.md
2026-01-11 13:04:33 +01:00

913 B

Website DI Rules (Inversify)

This repo uses Inversify DI under apps/website/lib/di.

1) Non-negotiable safety rule

No stateful service instances may be shared across requests.

Reason: Next.js server execution is concurrent; shared state causes cross-request leakage.

2) Rules by module type

2.1 page.tsx (server)

  • MUST NOT access the DI container directly.
  • MUST call a PageQuery only.

2.2 Page Queries (server)

  • SHOULD prefer explicit construction (manual wiring).
  • MAY use DI only if all resolved services are stateless and safe for concurrent requests.

2.3 Client modules

  • MAY use DI via ContainerProvider and hooks (example: useInject).

3) Container singleton warning

ContainerManager holds a singleton container. Treat it as unsafe for server request scope unless proven otherwise.