You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/001-user-signup-pin/plan.md
+12-11Lines changed: 12 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,14 @@
5
5
6
6
## Summary
7
7
8
-
Deliver the first local identity vertical slice: a minimal Aurelia 2 signup/identify flow using name + PIN, local persistence with generated user IDs, secure PIN storage via salted non-reversible hash, progressive delay anti-bruteforce protection, and reliable `UserRegistered` event publication with retry semantics after persistence.
8
+
Deliver the first local identity vertical slice: a minimal React signup/identify flow using name + PIN, local persistence with generated user IDs, secure PIN storage via salted non-reversible hash, progressive delay anti-bruteforce protection, and reliable `UserRegistered` event publication with retry semantics after persistence.
**Primary Dependencies**: ASP.NET Core Minimal API, Microsoft Aspire AppHost, Entity Framework Core + SQLite provider, React 19 + Vite, .NET `System.Security.Cryptography` (PBKDF2), background worker for outbox retry
14
14
**Storage**: SQLite local database with EF Core migrations (users, credentials, attempt-state, outbox events)
15
-
**Testing**: xUnit integration/unit tests for API/domain, Playwright MCP for end-to-end user journeys, Aurelia component tests for form validation
15
+
**Testing**: xUnit integration/unit tests for API/domain, Playwright MCP for end-to-end user journeys, React component tests for form validation
16
16
**Target Platform**: Local development on Windows/macOS/Linux; desktop and mobile browsers for UI
17
17
**Project Type**: Aspire-orchestrated web application (frontend + API + local database)
18
18
**Performance Goals**: API endpoints <500ms p95 under normal local load; identification throttle behavior deterministic; event publication catch-up <5s typical
@@ -31,9 +31,9 @@ Deliver the first local identity vertical slice: a minimal Aurelia 2 signup/iden
31
31
| Functional Core / Impure Edge | PASS | Hashing, normalization, and delay calculation remain deterministic functions; DB and event publication isolated at edges. |
32
32
| Event Sourcing & CQRS | PASS |`UserRegistered` event is immutable and drives projection/event consumers asynchronously. |
33
33
| Quality-First (TDD) | PASS | Test plan will be created in `/speckit.tasks`; implementation remains gated on approved tests. |
34
-
| UX Consistency & Accessibility | PASS |Aurelia 2 form flow with accessible labels, keyboard navigation, and clear validation feedback. |
34
+
| UX Consistency & Accessibility | PASS |React form flow with accessible labels, keyboard navigation, and clear validation feedback. |
35
35
| Performance & Observability | PASS | Response and event-lag targets align with constitution SLOs; service defaults keep telemetry enabled locally. |
36
-
| Three-Layer Validation | PASS | Validation planned in Aurelia form, API DTO validation, and DB constraints/indexes. |
36
+
| Three-Layer Validation | PASS | Validation planned in React form state, API DTO validation, and DB constraints/indexes. |
37
37
38
38
**Gate Decision**: PASS. No constitutional violations require exception handling.
Copy file name to clipboardExpand all lines: specs/001-user-signup-pin/tasks.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,16 +49,16 @@
49
49
50
50
### Implementation for User Story 1
51
51
52
-
-[X] T017 [P][US1] Build signup page view-model with client-side validation state in src/BikeTracking.Frontend/src/pages/signup/signup-page.ts
53
-
-[X] T018 [P][US1] Build accessible signup form markup with field-level validation bindings in src/BikeTracking.Frontend/src/pages/signup/signup-page.html
52
+
-[X] T017 [P][US1] Build signup page React state model with client-side validation in src/BikeTracking.Frontend/src/pages/signup/signup-page.tsx
53
+
-[X] T018 [P][US1] Build accessible signup form JSX with field-level validation bindings in src/BikeTracking.Frontend/src/pages/signup/signup-page.tsx
54
54
-[X] T019 [P][US1] Implement signup API client method in src/BikeTracking.Frontend/src/services/users-api.ts
55
-
-[X] T020 [US1] Register signup page bootstrap in src/BikeTracking.Frontend/src/main.ts
55
+
-[X] T020 [US1] Register signup page bootstrap in src/BikeTracking.Frontend/src/App.tsx and src/BikeTracking.Frontend/src/main.tsx
56
56
-[X] T021 [P][US1] Define signup request/response DTOs and duplicate-name error code in src/BikeTracking.Api/Contracts/UsersContracts.cs
57
57
-[X] T022 [US1] Implement signup application service with normalized-name duplicate check in src/BikeTracking.Api/Application/Users/SignupService.cs
58
58
-[X] T023 [US1] Persist User, UserCredential, and AuthAttemptState transactionally in src/BikeTracking.Api/Application/Users/SignupService.cs
59
59
-[X] T024 [US1] Queue UserRegistered outbox event during signup transaction in src/BikeTracking.Api/Application/Users/SignupService.cs
60
60
-[X] T025 [US1] Implement POST /api/users/signup with 201/400/409 semantics in src/BikeTracking.Api/Endpoints/UsersEndpoints.cs
61
-
-[X] T026 [US1] Wire frontend signup submit flow and server error rendering in src/BikeTracking.Frontend/src/pages/signup/signup-page.ts
61
+
-[X] T026 [US1] Wire frontend signup submit flow and server error rendering in src/BikeTracking.Frontend/src/pages/signup/signup-page.tsx
62
62
63
63
**Checkpoint**: User Story 1 is complete and independently testable as the MVP.
64
64
@@ -74,13 +74,13 @@
74
74
75
75
-[X] T027 [P][US2] Define identify request/response contracts and throttle payload in src/BikeTracking.Api/Contracts/UsersContracts.cs
76
76
-[X] T028 [P][US2] Implement identify API client method with Retry-After handling in src/BikeTracking.Frontend/src/services/users-api.ts
77
-
-[X] T029 [P][US2] Add identify controls and throttle message placeholders in src/BikeTracking.Frontend/src/pages/signup/signup-page.html
77
+
-[X] T029 [P][US2] Add identify controls and throttle message placeholders in src/BikeTracking.Frontend/src/pages/signup/signup-page.tsx
0 commit comments