Skip to main content

Architecture

Nevermore's architecture is built around a few core ideas: services as singletons managed by a dependency injection container, and composable packages that can be combined without knowing about each other.

Workspace Layout

The monorepo is organized into four workspace areas:

DirectoryContentsLanguage
src/200+ Luau packages (e.g. src/maid/, src/rx/, src/servicebag/). Each is an independently versioned npm package with its own package.json. This is where most development happens.Luau
tools/CLI tools: nevermore-cli (test, deploy, scaffolding), studio-bridge (WebSocket bridge to Studio), and shared helper libraries.TypeScript
games/Game projects used for integration testing. Each game has a Rojo project, deploy config, and entry scripts that consume packages from src/.Luau
plugins/Roblox Studio plugins. Same structure as games but targeting the plugin context.Luau

docs/ contains the Docusaurus documentation site (what you're reading now).

Guides

  • Design Principles — Why Nevermore is structured as a mono-repo of composable packages, what types of packages exist, and what the project optimizes for.
  • Using Services — How ServiceBag provides dependency injection and lifecycle management. The most important architectural concept to understand.
  • Core Patterns — Maid, BaseObject, Binder, Rx, Brio, Blend, AdorneeData, and TieDefinition — the building blocks that appear throughout the codebase.