Rename project to JAMS (Just A simple intelligent Media Server), replace lms- prefix with jams- throughout

This commit is contained in:
2026-05-15 00:10:07 +08:00
parent 31fc98f57f
commit d1adf4e5dc
4 changed files with 112 additions and 105 deletions
+11 -10
View File
@@ -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)
---