Commit graph

14 commits

Author SHA1 Message Date
e4967e1cda fix: sync admin UI schema with plugin (UUID keys, lesson_media table)
Schema now matches plugin Data/LessonStore.cs exactly:
- id TEXT PRIMARY KEY (UUIDs)
- lesson_media table (not media_items)
- Full column set with NOT NULL constraints matching plugin

Addresses PR #14 review feedback.
2026-05-15 21:50:21 -07:00
Scott Scoble
6e7d2372e7 feat: add web admin UI for lesson management (#7)
- REST API server on port 3099 with better-sqlite3
- CRUD endpoints for lessons, Typst compile endpoint
- Shared DB path with plugin (~/.local/share/jellyfin-lessons/lessons.db)
- Single-page admin UI with sidebar (grouped by grade/subject)
- Lesson editor with Typst source editing, live preview via compile
- Media items management (Jellyfin item UUIDs with sort order)
- CORS enabled for local dev
2026-05-15 21:43:34 -07:00
08f040d317 Merge pull request 'feat: Typst lesson template with Jellyfin media frontmatter' (#9) from issue-3-typst-template into main 2026-05-15 21:39:37 -07:00
8b9d156166 fix: make media-ref inline with block: false
raw() defaults to block mode which wraps output in <pre><code>,
breaking list-item rendering. block: false keeps it inline.

Addresses PR #9 review feedback.
2026-05-15 21:39:28 -07:00
fa91314c49 Merge pull request 'feat: SQLite lesson data store with schema and C# access layer' (#13) from issue-4-data-store into main 2026-05-15 21:38:51 -07:00
8915beef8e Merge pull request 'feat: Jellyfin plugin skeleton (Plugin.cs, Configuration, ServiceRegistrator)' (#11) from issue-2-plugin-skeleton into main 2026-05-15 21:38:50 -07:00
838d0cbbec feat: SQLite lesson data store with schema and C# access layer
- Lesson.cs and LessonMedia.cs model classes
- LessonStore.cs with CRUD operations
- Microsoft.Data.Sqlite package reference
- Default DB path: ~/.local/share/jellyfin-lessons/lessons.db

Closes #4
2026-05-15 21:38:35 -07:00
88b5de7aee feat: Jellyfin plugin skeleton
- Plugin.cs: BasePlugin<PluginConfiguration>, Name 'Lessons'
- PluginConfiguration.cs: empty config class
- ServiceRegistrator.cs: IPluginServiceRegistrator for DI

Closes #2
2026-05-15 21:37:21 -07:00
1e1d059642 Merge pull request 'feat: scaffold Nix flake with dotnet-sdk_9, typst, and nodejs' (#10) from issue-1-flake-scaffold into main 2026-05-15 21:26:20 -07:00
Scott Scoble
4e12bc5b41 fix: populate deps.json, add Jellyfin package refs, rename csproj to Jellyfin.Plugin.Lessons.csproj
- Generated correct deps.json with nuget-to-json for all NuGet dependencies
- Added Jellyfin.Controller and Jellyfin.Model package references with ExcludeAssets=runtime
- Renamed csproj to Jellyfin.Plugin.Lessons.csproj (updated flake.nix projectFile)
2026-05-15 21:25:13 -07:00
Scott Scoble
d94b71d0a1 feat: scaffold Nix flake with dotnet-sdk_9, typst, and nodejs
- devShells.default provides dotnetCorePackages.sdk_9_0, typst, nodejs
- packages.default uses buildDotnetModule with net9.0 target via callPackage
- Stub plugin/ project with minimal .csproj
- .gitignore with .NET/Nix build artifacts
2026-05-15 21:18:15 -07:00
Scott Scoble
0700c35310 feat: add Typst lesson template with Jellyfin media frontmatter
- Add templates/lesson.typ: reusable template with lesson-template() function
  - Accepts title, grade, subject, date, media, description parameters
  - Comment-based frontmatter convention documented at top
  - Renders title heading, metadata line, description, body, media section
  - Media references use raw(lang: "jellyfin-media") for identifiable HTML elements
- Add templates/example-lesson.typ: complete example (Water Cycle lesson)
  - Demonstrates all template features
  - Christian-homeschool appropriate content (Psalm 135:7)
  - Includes 2 Jellyfin media references

Closes #3
2026-05-15 21:18:04 -07:00
Scott Scoble
462db42a18 Architecture and component overview 2026-05-15 21:12:08 -07:00
8c213d8cc1 Initial commit 2026-05-15 21:10:26 -07:00