7 Commits
Author SHA1 Message Date
ehoandClaude Sonnet 5 7dddf875a2 docs: bring README in line with strict mode, routing, and the HTTP boundary
ci / verify (push) Successful in 47s
Updates the architecture/dependency diagrams and omissions table to match
what actually shipped: RemoteData<T> (not <E, T>), @angular/router moved
from "avoided" to "used", the new shared/infrastructure/http.ts fetch
boundary, and the CI/coverage gates now in place. Removes the now-false
"CI pipeline" omission row and adds honest rows for the linter and
per-environment config this template still deliberately skips.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 10:30:02 +02:00
ehoandClaude Sonnet 5 c895929f58 fix: enable strict mode, honest HTTP boundary, and add routing
Three fixes to the parts of the template that contradicted its own
"illegal states unrepresentable" claim:

- tsconfig: turn on strict + strictTemplates (measured zero fallout —
  the codebase already typechecked cleanly, it just wasn't enforced).
- RemoteData<T> drops its unused error type parameter (Resource.error
  is always Error) and Failure now carries a real Error. Pages read the
  union with @let instead of re-deriving from the resource, which
  deletes the non-null assertion strictNullChecks would otherwise flag.
- users.adapter.ts never checked response.ok, so an HTTP error resolved
  as a garbage Success and crashed instead of reaching RemoteData's
  Failure branch. New shared/infrastructure/http.ts adds the status
  check plus hand-written parse guards and abortSignal forwarding; the
  six fetch stubs across the test suite (which encoded the missing
  check) and adapter spec now cover the Failure and Empty paths.

Also adds real routing (@angular/router was a dependency with zero
imports and a fake "Back" button): /users and /users/:id are now
deep-linkable via withComponentInputBinding(), tested with
RouterTestingHarness driving real navigation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 10:29:47 +02:00
ehoandClaude Sonnet 5 6ad5b65f68 chore: add CI, coverage gates, and fix template hygiene
Wires the previously-inert @vitest/coverage-v8 into the test builder with
measured thresholds, adds a GitHub Actions workflow (format, test, build),
and fixes assorted gaps a cloning team would hit: no LICENSE, no engines/
.nvmrc, an unusable prettier install, a committed local-only settings file,
a dead 0-byte stylesheet, and a broken Karma-era VS Code test/debug config.
Also drops @angular/forms, which nothing in src/ imports.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 10:29:32 +02:00
eho 78f590af04 fix: quote parenthesized Mermaid edge label to avoid parse error
Mermaid's pipe-style edge labels need quotes when the text contains
parentheses; node labels in brackets were already fine.
2026-08-01 08:59:35 +02:00
eho a3ea91edd2 docs: add architecture/dependency Mermaid diagrams and Elm-store guide
README now shows folder layering, minimal-Angular dependency flow, and
the users feature data flow as diagrams. Adds docs/adding-a-store.md,
a step-by-step guide to building an Elm-style store from just signals.
2026-08-01 08:56:20 +02:00
ehoandClaude Sonnet 5 927404afd7 feat: minimal signals + RemoteData template with a users feature
Extracted from atomic-design-poc: RemoteData<E,T> (bare union + fromResource,
no combinators) + a trimmed <app-async> switch, no Elm-style store — state is
resource() plus one plain signal. Minimal DDD layering per context
(domain/infrastructure/application/ui) combined with atomic design inside
ui/ (atoms/molecules/organisms/templates/pages), mirroring the POC's
conventions at template scale.

One worked feature (users/): a list with a click-through to a detail view
(its own independent resource() fetch) and a Back action. Tests are
BDD-style (describe/it, one assertion per it) and black-box (assert
rendered DOM/emitted events only) - 100% branch/line coverage. README.md
documents what's deliberately omitted vs. the POC and the concrete growth
path back to it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 23:27:09 +02:00
eho 209df1ae5a initial commit 2026-07-31 23:08:17 +02:00