d82c4559735962b55d644922141994928a67d8a6
Prisma 7 introduced two breaking changes that conflict with
nestjs-prisma 0.27.0:
1. The `prisma-client` provider (new default in Prisma 7) outputs
the typed client to a custom path declared in schema.prisma.
nestjs-prisma's PrismaService extends @prisma/client's runtime,
which boots through @prisma/client/default.js — that stub requires
`.prisma/client/default` in a sibling node_modules tree. Only the
legacy `prisma-client-js` generator populates that path.
2. PrismaClientOptions in Prisma 7 no longer exposes `datasourceUrl`
nor `datasources`. Connection now requires a driver adapter
(e.g. `@prisma/adapter-pg` for Postgres). nestjs-prisma 0.27.0
does not pass an adapter, and `new PrismaClient(undefined)` is
rejected with `PrismaClientInitializationError: PrismaClient needs
to be constructed with a non-empty, valid PrismaClientOptions`.
Both quirks are Prisma 7's adapter-first architecture surfacing
through a still-Prisma-6-shaped wrapper. nestjs-prisma's peer-deps
say `^7.0.0` but its design assumes the older API. Working around
each issue separately leads further into bespoke wiring (custom
PrismaService, manual @prisma/adapter-pg setup) — bricolage on a
foundational layer.
Per CLAUDE.md ("default to stable, recognized, battle-tested
choices"), downgrade to Prisma 6.19 (still actively maintained):
- package.json: prisma + @prisma/client pinned to ^6 (resolved 6.19.3)
- apps/portal-bff/prisma/schema.prisma:
- generator client: `prisma-client-js` (Prisma 6 default)
- datasource db: explicit `url = env("DATABASE_URL")` (required by
Prisma 6, was implicit in Prisma 7 via prisma.config.ts)
- apps/portal-bff/prisma.config.ts: removed (Prisma 7-only feature)
- apps/portal-bff/.gitignore: drop the now-irrelevant
`/generated/prisma` entry (no custom output dir with prisma-client-js)
ADR-0006 ("Persistence — PostgreSQL with Prisma") is unchanged: it
specifies Prisma without pinning a version. The version choice is a
tactical detail.
Re-evaluate when nestjs-prisma releases an update aligned with
Prisma 7's adapter model.
Verified: pnpm exec prisma generate populates Prisma 6's
.prisma/client/default.{js,d.ts}; pnpm nx build portal-bff green.
Runtime serve to be re-verified locally before merge.
Merge pull request 'docs: add docs/architecture.md with C4 contexts, Nx boundaries, and CI/CD pipeline' (#1) from docs/architecture-diagrams into main
Documentation index
This is the entry point to all project documentation. It is maintained automatically: any addition, rename, or removal of a .md file under docs/ must be reflected here in the same change.
Conventions
- Documentation is written in English.
- One topic per file. Group related files into a folder when there are three or more.
- Cross-reference with relative links so they keep working in GitHub, IDEs, and exported sites.
- For architectural decisions, do not add them here — they belong in decisions/ as MADR 4.0.0 ADRs.
Sections
Daily development
- development.md — repo layout, prerequisites, initial setup, daily commands, conventional commit cycle. Day-to-day reference for working on the project.
Architecture
- architecture.md — cross-cutting Mermaid diagrams: C4 system context, C4 containers, Nx module boundaries, CI/CD pipeline. Single-decision diagrams (auth sequence, ERD, etc.) live inline in their ADR.
Onboarding & environment
Setup guides for new contributors:
- setup/01-wsl-terminal-setup.md — modern WSL terminal (Zsh + Powerlevel10k + CLI tools)
- setup/02-dev-web-stack.md — Node via nvm, pnpm via corepack, Docker
- setup/03-angular-nx-monorepo.md — Angular + Nx monorepo bootstrap
Operations & runbooks
Empty — to be populated when we deploy.
Security, performance, accessibility
Empty — placeholders to be filled with rationale docs alongside their corresponding ADRs.
Description
Languages
TypeScript
85.3%
JavaScript
5.4%
SCSS
4.3%
HTML
3.9%
Shell
0.8%
Other
0.3%