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.
- 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
- Plugin.cs: BasePlugin<PluginConfiguration>, Name 'Lessons'
- PluginConfiguration.cs: empty config class
- ServiceRegistrator.cs: IPluginServiceRegistrator for DI
Closes#2
- 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)
- 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