chore: initialize repository with project rules, docs, and phase-1 ADRs
Set up the foundation for the adastra-portal project: - CLAUDE.md captures durable project rules (quality bar, security/perf/a11y as first-class, language, commit conventions, ADR proactivity). - docs/ and decisions/ scaffolding with maintained indexes (docs/README.md and decisions/README.md), MADR 4.0.0 template, and tag vocabulary. - Phase-1 ADRs (0001-0006) lock structural choices: ADR usage, Nx monorepo with the apps preset, naming convention (adastra-portal / portal-shell / portal-bff), Angular CSR/zoneless/Signals/Vitest, NestJS over Express, PostgreSQL with Prisma. - docs/setup/ guides translated to English. - .gitignore covers Node/Nx artifacts and the personal notes/ scratchpad. The Nx workspace itself is not yet bootstrapped; that step is gated on a revised setup guide aligned with the ADRs.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Architectural Decision Records
|
||||
|
||||
This project records architecturally-significant decisions as **ADRs** in the [MADR 4.0.0](https://github.com/adr/madr) format. References: [adr.github.io](https://adr.github.io/).
|
||||
|
||||
## Why ADRs
|
||||
|
||||
ADRs capture the *why* behind a decision — context, drivers, options considered, trade-offs accepted — at the moment the decision is made. They make architecture reviewable, onboarding faster, and prevent the same debate from being re-litigated later.
|
||||
|
||||
## Conventions
|
||||
|
||||
- **Format:** MADR 4.0.0. Start from [template.md](template.md).
|
||||
- **Filename:** `NNNN-kebab-case-title.md`, e.g. `0007-adopt-tailwind-for-design-tokens.md`.
|
||||
- **Numbering:** globally sequential 4-digit prefix. Numbers never reset, never get reused — even when an ADR is superseded or deprecated.
|
||||
- **Layout:** flat folder. ADRs are not nested into category subfolders; topical organization happens via tags.
|
||||
- **Tags:** every ADR carries a `tags:` array in the MADR frontmatter, drawn from the [tag vocabulary](#tag-vocabulary) below. An ADR may carry several tags. Propose new tags (or renames) in the same PR that needs them; never invent ad-hoc tags inline.
|
||||
- **Status lifecycle:** `proposed` → `accepted` → optionally `deprecated` or `superseded by [ADR-NNNN](NNNN-other.md)`. Update the YAML frontmatter; never delete an ADR.
|
||||
- **Index maintenance:** every ADR addition or status change must update the [Index](#index) below in the same commit.
|
||||
|
||||
## When to write an ADR
|
||||
|
||||
Write one whenever a development decision is non-trivial: tool or library choice, framework pattern, security control, perf budget, a11y target, naming convention, deprecation, breaking change, or any choice that future contributors would benefit from understanding the *why* of.
|
||||
|
||||
## Tag vocabulary
|
||||
|
||||
The vocabulary below is the source of truth. It is intentionally coarse — propose extensions only when an existing tag genuinely doesn't fit, and avoid overly narrow tags.
|
||||
|
||||
| Tag | Scope |
|
||||
| ---------------- | ----- |
|
||||
| `frontend` | UI, Angular, components, design system, client-side state |
|
||||
| `backend` | API, BFF, server-side services |
|
||||
| `security` | AuthN, AuthZ, sessions, CSP, dependency scanning, secret management |
|
||||
| `performance` | Perf budgets, caching, bundle size, Lighthouse |
|
||||
| `accessibility` | WCAG, a11y testing, keyboard, ARIA, contrast |
|
||||
| `infrastructure` | CI/CD, hosting, deployment, runtime |
|
||||
| `observability` | Logs, metrics, traces, correlation IDs, monitoring |
|
||||
| `data` | Persistence, schemas, migrations, data flow |
|
||||
| `process` | Team conventions, workflows, repo policy |
|
||||
|
||||
> _Status: starter vocabulary, to be refined as ADRs accumulate. Update this table whenever a tag is added, renamed, or retired._
|
||||
|
||||
## Index
|
||||
|
||||
ADRs are listed in numerical order. To slice by topic, filter on the `Tags` column.
|
||||
|
||||
| # | Title | Status | Tags | Date |
|
||||
| ---- | ----- | ------ | ---- | ---- |
|
||||
| [0001](0001-use-adrs-to-record-architectural-decisions.md) | Use ADRs to record architectural decisions | accepted | `process` | 2026-04-29 |
|
||||
| [0002](0002-adopt-nx-monorepo-apps-preset.md) | Adopt Nx monorepo with the `apps` preset | accepted | `infrastructure`, `frontend`, `backend` | 2026-04-29 |
|
||||
| [0003](0003-workspace-and-app-naming-convention.md) | Workspace and app naming convention | accepted | `process` | 2026-04-29 |
|
||||
| [0004](0004-frontend-stack-angular-csr-zoneless-signals.md) | Frontend stack — Angular (latest LTS), standalone, zoneless, Signals, CSR-only, Vitest | accepted | `frontend` | 2026-04-29 |
|
||||
| [0005](0005-backend-stack-nestjs.md) | Backend stack — NestJS over Express, Fastify, Hono | accepted | `backend` | 2026-04-29 |
|
||||
| [0006](0006-persistence-postgresql-prisma.md) | Persistence — PostgreSQL with Prisma | accepted | `data`, `backend` | 2026-04-29 |
|
||||
Reference in New Issue
Block a user