Rename project to JAMS (Just A simple intelligent Media Server), replace lms- prefix with jams- throughout
This commit is contained in:
+11
-10
@@ -19,7 +19,6 @@ A self-hosted video media server that uses LLMs to automatically index, tag, cla
|
||||
- [ ] Identify content type (movie, TV episode, home video) from filename + video analysis
|
||||
- [ ] Match movies/TV shows against known titles (local heuristics + LLM reasoning)
|
||||
- [ ] Extract season/episode numbers for TV shows
|
||||
- [ ] Tag home videos with inferred subjects, locations, events (via frame analysis + LLM)
|
||||
- [ ] Classify content genre, mood, rating (family-safe, etc.)
|
||||
- [ ] Confidence scoring for all LLM-generated tags; flag low-confidence for manual review
|
||||
|
||||
@@ -142,33 +141,35 @@ LLM metadata is used **only when** the external source returns no match or parti
|
||||
|
||||
| Concern | Choice | Rationale |
|
||||
|----------------------|---------------------|--------------------------------------------------|
|
||||
| Backend language | Go | Single binary, excellent HTTP/concurrency, ffmpeg CGO optional |
|
||||
| Database | SQLite (sqlx) | Zero-config, embeddable, enough for single-user |
|
||||
| Backend language | **Rust** | Memory safety, zero-cost abstractions, ideal for media processing throughput |
|
||||
| Web framework | Axum | Async, tower-compatible, ergonomic REST routing |
|
||||
| Async runtime | Tokio | Industry-standard async runtime for Rust |
|
||||
| Database | SQLite (sqlx) | Zero-config, embeddable, async support via sqlx |
|
||||
| Media processing | ffmpeg (subprocess) | Industry standard, broad format support |
|
||||
| LLM (local) | Ollama REST API | Simple HTTP interface, model management built-in |
|
||||
| LLM (cloud) | Anthropic SDK + OpenAI SDK | Dual-provider via abstraction layer |
|
||||
| LLM (cloud) | Anthropic + OpenAI HTTP API | Via reqwest, provider abstraction layer |
|
||||
| Containerization | Docker + Compose | Multi-service: server + ollama + optional GPU |
|
||||
| Config format | TOML | Human-friendly, Go ecosystem support (viper) |
|
||||
| Web UI | HTMX + Tailwind | No JS framework needed, Go template rendering |
|
||||
| Config format | TOML | Human-friendly, serde-compatible (toml crate) |
|
||||
| Frontend | TBD | Pure backend for now; API-first design |
|
||||
|
||||
> **Rust alternative**: Rust is viable if performance is critical (transcoding pipeline), but Go is recommended for faster initial development and simpler deployment.
|
||||
> **Frontend deferred**: The server exposes a clean REST API. Frontend tech will be decided after core backend is stable.
|
||||
|
||||
---
|
||||
|
||||
## 5. MVP Scope (Phase 1)
|
||||
|
||||
Goal: Working library scanner + LLM tagging + basic web UI + streaming
|
||||
Goal: Working library scanner + LLM tagging + REST API + streaming (pure backend)
|
||||
|
||||
- [ ] Directory watcher + file ingestion
|
||||
- [ ] Movie/TV classification (filename heuristics + LLM disambiguation)
|
||||
- [ ] Metadata fetch from TMDB API (primary); LLM fills unmatched/missing fields only
|
||||
- [ ] Thumbnail extraction
|
||||
- [ ] SQLite metadata store
|
||||
- [ ] SQLite metadata store (sqlx async)
|
||||
- [ ] REST API: list library, get item, trigger re-scan
|
||||
- [ ] Basic web UI: grid view + video player
|
||||
- [ ] Direct-play HTTP streaming
|
||||
- [ ] Ollama integration (local LLM)
|
||||
- [ ] Docker Compose setup
|
||||
- [ ] Frontend: TBD (API-first, no UI in MVP)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user