Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a performance-conscious Angular dashboard. Use SIGNALS + computed() for all derived state and OnPush change detection on components to minimize checks. Add a CUSTOM attribute directive (e.g. a v-click-outside / highlight directive using HostListener/HostBinding), a CUSTOM pipe (with a transform()), and a FUNCTIONAL HTTP interceptor (HttpInterceptorFn) that attaches an auth header and logs. Lazy-load feature routes, then build with the CLI (ng build) and deploy the dist output. Explain where OnPush + signals reduce change-detection work.
Derived state via computed(); OnPush change detection applied and correct; can articulate the change-detection win.
A working custom attribute directive (HostListener/HostBinding) and a correct custom pipe with transform().
A functional HttpInterceptorFn attaches headers/logs; feature routes are lazy-loaded for code-splitting.
Production ng build succeeds; dist deployed to a static host; no console errors in production.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A signals dashboard with OnPush, a directive, a pipe & an interceptor ## Goal Build a performance-conscious Angular dashboard. Use SIGNALS + computed() for all derived state and OnPush change detection on components to minimize checks. Add a CUSTOM attribute directive (e.g. a v-click-outside / highlight directive using HostListener/HostBinding), a CUSTOM pipe (with a transform()), and a FUNCTIONAL HTTP interceptor (HttpInterceptorFn) that attaches an auth header and logs. Lazy-load feature routes, then build with the CLI (ng build) and deploy the dist output. Explain where OnPush + signals reduce change-detection work. ## Acceptance criteria - [ ] Signals & OnPush: Derived state via computed(); OnPush change detection applied and correct; can articulate the change-detection win. - [ ] Directive & pipe: A working custom attribute directive (HostListener/HostBinding) and a correct custom pipe with transform(). - [ ] Interceptor & lazy routes: A functional HttpInterceptorFn attaches headers/logs; feature routes are lazy-loaded for code-splitting. - [ ] Build & deploy: Production ng build succeeds; dist deployed to a static host; no console errors in production. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.