Community Modules
community · @your-scope/titan-yourmodule
No community-maintained Titan modules are registered yet. This page is the canonical home for them as the ecosystem grows.
What counts as a community module
A community module is a third-party package that:
Follows the Titan module conventions — exports a class with
.forRoot(...)(and ideally.forRootAsync(...)).Depends on
@omnitron-dev/titanand (optionally)@omnitron-dev/titan-redisor other ecosystem modules.Is published to a public registry (npm, GitHub Packages, etc.).
Is maintained outside the
omnitron-devorganisation.
Adopting a community module — what to check
flowchart LR
Find[Find a candidate]
Find --> Audit{Read the source}
Audit -->|forRoot signature documented| OK1[OK]
Audit -->|undocumented| Reject1[Reject]
Audit --> Lifecycle{Honours onInit/onStop?}
Lifecycle -->|yes| OK2[OK]
Lifecycle -->|no| Reject2[Reject — resource leaks likely]
Audit --> Pinning{Pins exact titan core?}
Pinning -->|no \^/~ range| OK3[OK]
Pinning -->|exact| Yellow[Yellow — needs updates]
OK1 --> Try[Try in dev]
OK2 --> Try
OK3 --> Try
Yellow --> Try
Try --> Decide{Use in prod?}Specifically:
Lifecycle compliance. Does it implement
OnInit/OnStart/OnStop/OnDestroyproperly? Lifecycle violations leak resources at shutdown.Token isolation. Does it export typed tokens for all its services? Modules that resolve by string keys are fragile.
Configuration validation. Does the
forRootoptions interface have a Zod schema, or does it crash at first use on bad configuration?Test coverage. Does the package ship with a test suite that exercises the public API?
Maintenance. When was the last commit? Does the maintainer respond to issues?
Publishing your own
Quick summary:
Package convention. Name it
<your-scope>/titan-<purpose>(e.g.@acme/titan-stripe).Module class. Export a
XxxModuleclass with at least.forRoot(options). Add.forRootAsync(...)if your configuration depends on other providers.README. Document the
forRootoptions, the exported services and tokens, and a minimal quickstart.License. MIT or Apache 2.0 are the friendliest defaults.
Mention us. Open a PR against
omnitron-dev/omniadding your module to this page. Include the package URL, a one-line purpose statement, and a maintenance commitment.
→ Full step-by-step guide: Authoring a module covers the canonical package skeleton, every conventional file, options + tokens + service + module class + barrel + README, plus the conventions checklist that distinguishes a polished module from a thrown-together one.
Future entries
Once community modules are registered, each gets its own page in
this section with a <span class="module-badge">community</span>
chip. The reader knows at a glance the module is third-party and
should be audited before adoption.
For the canonical Titan ecosystem, see the Official modules.