Commit graph

126 commits

Author SHA1 Message Date
Johan Lundberg
e8fd7eb01d
test: add end-to-end browser tests with Playwright
Set up tests/e2e/ with a login page test covering branding, accessibility,
form structure, theme colors, and static asset serving. Includes run.sh
that manages the app lifecycle (start, test, stop) automatically.
2026-02-16 12:22:58 +01:00
Johan Lundberg
84e61464c7
feat: add Porchlight branding with logo, favicon, and redesigned CSS theme
Rebrand from FastAPI OIDC OP to Porchlight with warm amber/gold identity:
- Add doorway-with-light SVG logo and 32x32 PNG favicon
- Rewrite style.css with full design system (color tokens, spacing scale,
  typography scale, section cards, button variants, dark mode)
- Update base template with site header, logo, and favicon
- Update all page titles and FastAPI app title to Porchlight
2026-02-16 12:08:19 +01:00
Johan Lundberg
e15dcc4745
feat: add authentication routes with session login, WebAuthn, and credential management
Implement Phase 4 auth routes: password login/logout, WebAuthn
registration and authentication, magic link registration, and
credential management pages with HTMX. Includes session middleware,
Jinja2 templates, vendored HTMX, and last-credential guardrails.

120 tests passing.
2026-02-16 11:39:50 +01:00
Johan Lundberg
f7ed2cf54d
docs: add auth routes design document (Phase 4) 2026-02-13 15:45:18 +01:00
Johan Lundberg
6d8019464f
docs: update roadmap to reflect completed auth services 2026-02-13 15:03:46 +01:00
Johan Lundberg
4774ae3c2f
feat: add MagicLinkService with token create/validate/cleanup 2026-02-13 15:02:53 +01:00
Johan Lundberg
872001c6de
feat: add WebAuthnService with fido2 registration and authentication 2026-02-13 14:48:38 +01:00
Johan Lundberg
e6f5ea7f0c
feat: add PasswordService with argon2 hash/verify 2026-02-13 14:35:32 +01:00
Johan Lundberg
e543fe2229
docs: update sqlite design doc to reflect completed implementation 2026-02-13 14:02:05 +01:00
Johan Lundberg
a45604ff2f
feat: add lifespan integration and dependency injection 2026-02-13 13:59:59 +01:00
Johan Lundberg
9f4914a922
feat: add SQLiteMagicLinkRepository with tests 2026-02-13 13:53:14 +01:00
Johan Lundberg
bbe0dac8cb
feat: add SQLiteCredentialRepository with tests 2026-02-13 13:49:25 +01:00
Johan Lundberg
d941209f1e
feat: add SQLiteUserRepository with tests 2026-02-13 13:36:38 +01:00
Johan Lundberg
6c4ba79eed
feat: add DuplicateError domain exception 2026-02-13 13:14:01 +01:00
Johan Lundberg
627675fff1
feat: add SQLite migration runner 2026-02-13 13:08:44 +01:00
Johan Lundberg
bfa5b2e8d0
feat: add initial SQLite migration schema 2026-02-13 12:57:26 +01:00
Johan Lundberg
9d7a67b2d2
fix: add collision retry for userid generation 2026-02-12 15:34:31 +01:00
Johan Lundberg
e4e484dc4b
fix: make MagicLink.expires_at required, document validation test TODOs 2026-02-12 15:33:08 +01:00
Johan Lundberg
7454f8c8cb
chore: add quality check script (ruff, ty, pytest) 2026-02-12 15:25:00 +01:00
Johan Lundberg
6a8b41cd38
feat: add app factory with health endpoint and test infrastructure 2026-02-12 15:09:27 +01:00
Johan Lundberg
fd8c8cbf39
feat: add repository Protocol interfaces for User, Credential, MagicLink 2026-02-12 14:56:20 +01:00
Johan Lundberg
b22325588a
feat: add proquint-based userid generation 2026-02-12 14:56:10 +01:00
Johan Lundberg
e5220c97b1
feat: add Pydantic models for User, Credential, and MagicLink 2026-02-12 14:50:32 +01:00
Johan Lundberg
16a78663f3
feat: add configuration module with env-based settings 2026-02-12 14:42:26 +01:00
Johan Lundberg
922851b966
chore: create package structure with src layout 2026-02-12 14:39:07 +01:00
Johan Lundberg
9145f521ac
chore: configure project dependencies and tooling (ruff, ty, pytest) 2026-02-12 14:38:16 +01:00