Commit Graph

219 Commits

Author SHA1 Message Date
8051ab58c0 add /target to gitignore for new workspace root 2026-07-12 03:41:16 +02:00
dd4389d53e deprecate k-tv-backend, fix workspace feature-unification build 2026-07-12 03:35:09 +02:00
c869e9ab84 mcp: MCP server calling application use cases 2026-07-12 03:31:08 +02:00
56d742a74c presentation: HTTP server crate w/ handlers, routes, background tasks
Axum binary that wires all clean-arch crates together:
- AppState holds pre-built Deps structs (auth, channels, schedule, library, etc.)
- JWT extractors (CurrentUser, AdminUser, OptionalCurrentUser)
- Handlers delegate to application use cases, map to api-types DTOs
- Routes: auth, channels, schedule, library, admin, providers, config, iptv
- Background: auto-scheduler, broadcast poller, webhook consumer, library sync
- Factory builds everything from Config + DbPool
- SimpleProviderRegistry impl of IProviderRegistry trait
- NoopMediaProvider fallback
2026-07-12 03:23:20 +02:00
afed5c01b4 adapter-event-publisher: broadcast channel event bus 2026-07-12 02:54:43 +02:00
b93b14efe4 adapter-local-files: media provider, index, transcoder 2026-07-12 02:53:27 +02:00
e389e9e002 adapter-jellyfin: media provider 2026-07-12 02:47:13 +02:00
72ef9b9e1b adapter-auth: JWT, OIDC, password hashing 2026-07-12 02:44:16 +02:00
0fe80b545e adapter-postgres: all repository implementations 2026-07-12 02:39:56 +02:00
e8179d1f53 adapter-sqlite: all repo implementations + wire fn + migrations copy 2026-07-12 02:34:12 +02:00
1428f264bb adapter-common: shared DB mapping helpers 2026-07-12 02:26:42 +02:00
4cdde568f6 infra-wiring: DbPool enum + Config from env 2026-07-12 02:23:20 +02:00
1410d3e6bb api-types: HTTP DTOs with utoipa OpenAPI derives 2026-07-12 02:20:41 +02:00
466d34b5d0 application: config_snapshots, admin, providers, iptv 2026-07-12 02:14:07 +02:00
ebf0614fdf application: library bounded context 2026-07-12 02:08:04 +02:00
ef86a967cd application: schedule bounded context 2026-07-12 02:02:23 +02:00
6fd47f2d93 application: channels bounded context
CQRS use cases (create/update/delete/get/list/list_by_owner),
ownership checks, auto-snapshot on config change.
Channel setters added to domain model.
2026-07-12 01:57:38 +02:00
2976600d12 application: auth bounded context (register, login) 2026-07-12 01:49:34 +02:00
848d4752e2 domain testing: InMemory repos + Noops behind test-helpers 2026-07-12 01:41:23 +02:00
7ddf94c75f domain services: schedule engine, fill strategies, IPTV 2026-07-12 01:35:01 +02:00
87e7d85239 domain events: DomainEvent enum w/ ID-only variants 2026-07-12 01:29:40 +02:00
6d12ac4c5e fix domain ports: add EventConsumer, use ID newtypes 2026-07-12 01:27:38 +02:00
0166e829c1 domain ports: CQRS-split traits for all bounded contexts 2026-07-12 01:23:38 +02:00
616c60e213 domain models: schedule, library, config_snapshot, activity, provider_config 2026-07-12 01:17:44 +02:00
528b155327 domain models: User, Channel, ScheduleConfig, MediaItem, PlaybackRecord 2026-07-12 01:11:11 +02:00
b2e71403d8 domain value objects: auth, scheduling, channel, oidc, search 2026-07-12 01:05:31 +02:00
3ff146615f scaffold workspace + domain crate (errors, ids, uuid_id macro) 2026-07-12 01:00:50 +02:00
e3a65d8052 fix: use StdRng for shuffling indices in fill_block function 2026-03-20 23:12:44 +01:00
f45ca77b79 fix: format code for improved readability and consistency 2026-03-20 01:57:22 +01:00
a5c31ef8a9 fix(frontend): restore plain type labels in grouped sidebar 2026-03-20 01:56:11 +01:00
3662a5ab9e fix(frontend): suppress shows when type filter active; clarify grouped type labels 2026-03-20 01:53:13 +01:00
137251fe37 fix(frontend): restore ALL sentinel in sidebar to fix hydration mismatch 2026-03-20 01:33:27 +01:00
8101734c63 feat(frontend): add useLibraryShows and useLibrarySeasons hooks 2026-03-20 01:29:55 +01:00
6cf8a6d5e3 feat(frontend): implement grouped/drilldown view in library grid 2026-03-20 01:23:33 +01:00
c5317cb639 feat(frontend): add viewMode/drilldown state to library page 2026-03-20 01:21:54 +01:00
5f66493558 feat(api): add /library/shows and /library/shows/:name/seasons routes + season filter 2026-03-20 01:19:31 +01:00
5cc4cde223 feat(frontend): add ShowTile, SeasonTile, BreadcrumbNav components 2026-03-20 01:19:08 +01:00
5b89481104 feat(frontend): extend schedule dialog to support show/series selection 2026-03-20 01:19:00 +01:00
33338ac100 feat(frontend): make library sidebar drilldown-aware 2026-03-20 01:18:52 +01:00
66eef2c82e feat(frontend): add useLibraryShows and useLibrarySeasons hooks 2026-03-20 01:18:34 +01:00
6f1a4e19d3 feat(infra): implement list_shows, list_seasons + season_number filter 2026-03-20 01:16:02 +01:00
dd69470ee4 feat(frontend): add ShowSummary, SeasonSummary types + library shows/seasons API methods 2026-03-20 01:14:43 +01:00
23722a771b feat(domain): add ShowSummary, SeasonSummary types + ILibraryRepository methods 2026-03-20 01:13:00 +01:00
4cf7fdc1c2 feat(frontend): add library sync interval + sync now to admin settings panel 2026-03-20 00:38:04 +01:00
91271bd83c feat(frontend): library page, components, and schedule/add-to-block dialogs (tasks 11-14) 2026-03-20 00:35:40 +01:00
49c7f7abd7 feat(frontend): add useLibrarySearch, useLibrarySyncStatus, useTriggerSync, useAdminSettings hooks 2026-03-20 00:30:44 +01:00
978ad1cdb0 feat(frontend): add library paged types, syncStatus/triggerSync/admin API methods 2026-03-20 00:30:03 +01:00
e1a885dcc9 fix(api): mount admin settings routes at /admin/settings (not /admin/library/settings) 2026-03-20 00:28:24 +01:00
e849548e9e feat(api): replace live-provider library routes with DB-backed routes; add sync + admin settings endpoints 2026-03-20 00:27:06 +01:00
d92d629fbc feat(api): wire library_repo, app_settings_repo, library_sync_adapter into AppState; start scheduler 2026-03-20 00:23:25 +01:00