A Coral ecosystem module — built on TanStack Start, Tailwind v4, and the Jellyfin API.
Replace coral-module with your module name throughout:
# package.json → "name"
# .github/workflows/docker-publish.yml → IMAGE_NAME
# .github/workflows/release-please.yml → image_namepnpm installcp .env.example .env
# Fill in your Jellyfin URL, API key, and user IDpnpm devApp runs at http://localhost:3000.
| Tool | Purpose |
|---|---|
| TanStack Start | Full-stack React framework |
| TanStack Router | Type-safe file-based routing |
| TanStack Query | Server state management |
| Tailwind v4 | Styling |
| Biome | Linting & formatting |
| @get-coral/jellyfin | Jellyfin API client |
| Vitest | Testing |
pnpm dev # Start dev server on :3000
pnpm build # Production build
pnpm start # Run production server
pnpm typecheck # TypeScript check
pnpm check # Biome lint + format check
pnpm lint # Biome lint with auto-fix
pnpm test # Run tests# Build
docker build -t coral-module .
# Run
docker run -p 3000:3000 \
-e JELLYFIN_URL=http://your-nas:8096 \
-e JELLYFIN_API_KEY=your-key \
-e JELLYFIN_USER_ID=your-user-id \
coral-modulePublished automatically on every release via GitHub Actions, to the name set as
IMAGE_NAME in .github/workflows/docker-publish.yml:
getcoral/<module-name>on Docker Hubghcr.io/get-coral/<module-name>on GHCR
| Workflow | Trigger | What it does |
|---|---|---|
ci.yml |
Every PR + push to main | Typecheck, lint, test, build, Docker build check |
docker-publish.yml |
Push to main + version tags | Publishes to GHCR |
release-please.yml |
Push to main | Opens release PR, publishes Docker on merge |
Releases are fully automated via Release Please. Use conventional commits:
| Commit prefix | Version bump |
|---|---|
feat: |
Minor |
fix: |
Patch |
feat!: / fix!: |
Major |
chore:, docs: |
No bump |
This module is part of the Coral ecosystem. See the contributing guide before opening PRs.