-
Notifications
You must be signed in to change notification settings - Fork 0
Development History
peter edited this page Feb 17, 2026
·
2 revisions
| Phase | Topic |
|---|---|
| A | Project Setup (Blazor, MudBlazor, SQLite) |
| B | Database (entities, migrations, seed data) |
| C | Authentication (parent login, picture password) |
| D | Child Features (dashboard, requests) |
| E | Parent Features (approve/deny, transactions) |
| F | Scheduled Allowance (BackgroundService) |
| G | Email Infrastructure (password reset) |
| H | Docker & Deployment |
| I | Polish (responsive, UX refinements) |
| J | Multi-Child Support |
| K | First-Run Setup Wizard |
- 4-step wizard: Admin → Partner (optional) → Children → Email → Confirmation
- ISetupService with IsSetupRequiredAsync(), HasAdminAsync(), CompleteSetupAsync()
- PictureGridSetup component for child picture password creation
- DbInitializer only seeds demo data when JUNO_SEED_DEMO=true
- 5 failed attempts → 5-minute lockout
- Countdown timer display on login page
- Admin authorization on sensitive service methods
- Cookie hardening (HttpOnly, SameSite=Strict, 8-hour sliding expiration)
- Timing-safe picture password comparison
- Anti-enumeration (dummy BCrypt on unknown email)
- Security headers (X-Content-Type-Options, X-Frame-Options, etc.)
- Audit logging for login attempts, lockouts, admin actions
- Email reset — SMTP via Setup Wizard, "Forgot Password?" link
- Admin resets other parent — ResetParentPasswordAsync in AdminPanel
- CLI emergency reset — docker exec junobank dotnet JunoBank.Web.dll reset-password
- MoneyInput, ErrorAlert, SubmitButton, DescriptionField, PasswordFields
- All in Components/Shared/
- IBrowserTimeService detects browser timezone via JS interop
- All UTC timestamps converted to local time
- ScheduledAllowance stores TimeZoneId for background service
- ManualTransactionDialog, OrderEditorDialog, ResetPicturePasswordDialog
- Replaced full-page forms with MudDialog overlays
- Picture password reset and child lockout management
- IEmailConfigService for read/write/test SMTP config
- EmailSettingsDialog accessible from Settings page (admin-only)
- NotificationPreference entity with schedule (day, time, IANA timezone)
- NotificationService with IsDueToSend logic (10-min window, 6-day guard)
- WeeklySummaryEmailBuilder — dark-themed HTML email
- NotificationBackgroundService (5-min check interval)
- NotificationSettingsDialog — per-parent, all parents can configure