Skip to content

Forbidden Packages

Agents MUST NOT add any package in this list. Use the alternatives named in convention files.

Any package not in the pre-approved list in docs/conventions/backend/solution-structure.md (NuGet) or section 8 of the same file (npm) requires an ADR before use.


Forbidden NuGet Packages

PackageReasonAlternative
MediatRCommercial licensing transitionLiteBus.Commands.Abstractions, LiteBus.Queries.Abstractions, LiteBus.Events.Abstractions
AutoMapper, TinyMapper, MapsterConvention-based mapping hides transformation logic; property name mismatches produce runtime errorsExplicit mapping extension methods in ApiMappings classes
Newtonsoft.JsonSystem.Text.Json is the standard in .NET 10System.Text.Json
FluentValidationThrows ValidationException (not CommandValidationException); maps to HTTP 500 by defaultDirect if + throw with custom CommandValidationException / QueryValidationException subclasses
MassTransitRequires ADROutbox pattern per docs/conventions/backend/reliability.md
HangfireRequires ADRBackgroundService + PostgreSQL-backed job table per docs/conventions/backend/background-jobs.md
DapperRequires ADR for query handlersIDatabaseContext with EF Core LINQ projections per docs/conventions/backend/query-read-strategy.md
RestSharpRedundant with HttpClientHttpClient via IHttpClientFactory
EF Core InMemory provider (Microsoft.EntityFrameworkCore.InMemory)Skips relational constraints; does not translate LINQ the same way PostgreSQL doesMicrosoft.EntityFrameworkCore.Sqlite

Forbidden npm Packages

PackageReasonAlternative
axiosBypasses the typed OpenAPI clientgetApiClient() from the owned openapi-fetch client in packages/api-client/
moment, day.jsDeprecated or large bundleTemporal API or date-fns
@shadcn/uiNot an importable packagecomponents/ui/ populated via npx shadcn@latest add
@radix-ui/react-* (individual packages)Legacy Radix split packages; not used with shadcn CLI v4 base-nova@base-ui/react subpath imports (see generated components/ui/)
radix-ui (unified meta-package)Legacy shadcn/Radix stack; replaced by Base UI in CLI v4@base-ui/react
redux, @reduxjs/toolkit, mobx, jotai, recoilRequires ADR; Zustand is the approved UI state toolzustand
react-query (v3 package name)Old package name; contains security advisories@tanstack/react-query 5.x
lodash, underscoreRedundant with ES2022+ native utilitiesNative Array, Object, and String methods
classnamesRedundantclsx + tailwind-merge via the cn helper
jest, cypressNot the approved testing stackvitest (unit/component), @playwright/test (E2E)
Any workspace UI package (@workspace/ui, @litenova/ui)Each app owns its components/ui/Each app owns its components/ui/ populated via the shadcn CLI