feat: bootstrap MediaStationGo (Go + React rewrite of MediaStation)

Adopt the cropflre/nowen-video tech stack and rebuild the project from
scratch:

  - Backend: Go 1.25 + Gin + GORM + SQLite (WAL) + JWT + WebSocket hub.
    Layered packages config / database / model / repository / service /
    middleware / handler. Default admin (admin/admin123) seeded on first
    run; /api routes for auth, libraries, media, stream and admin
    panels. WebSocket scan-progress events at /api/ws.
  - Frontend: React 18 + Vite 5 + Tailwind 3.4 + Zustand + axios +
    react-router 6 + lucide-react + framer-motion + hls.js. Pages for
    Login / Home / Library / Search / MediaDetail / Player / Admin
    (Library, Users, Settings tabs).
  - Distribution: multi-arch Dockerfile (frontend -> backend -> Alpine
    runtime), docker-compose.yml, GitHub Actions for CI and GHCR
    publish, Makefile, env-prefixed config (MEDIASTATION_*).
  - Docs: README, CONTRIBUTING, .env.example, config.example.yaml.

Backend builds, vets and tests pass. Frontend builds via tsc -b && vite
build (250 kB JS / 16 kB CSS, gzipped 84 / 4 kB).
This commit is contained in:
Kiro
2026-05-14 15:26:29 +00:00
commit d5cf5fb4b2
60 changed files with 7592 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# Contributing to MediaStationGo
Thanks for taking the time to contribute! This document is intentionally short —
prefer asking in an issue/PR over re-reading rules.
## Local development
```bash
# Backend (Go 1.25+ required)
make dev # MEDIASTATION_APP_DEBUG=true go run ./cmd/server
# Frontend (Node 20+ required)
make dev-web # vite dev server on :3000, proxies /api -> :8080
```
Default admin: `admin / admin123` — change it after first login.
## Code style
- **Go**: keep packages small, services thin, errors wrapped with `%w`. Run
`go vet ./...` and `go test ./...` before pushing.
- **TypeScript**: `strict: true` is on. Prefer `interface` over `type` for
object shapes. Components live next to their page when not reused.
- Comments should explain *why*, not *what*. Avoid emoji in code.
## Commit / PR conventions
- Conventional commits encouraged: `feat:`, `fix:`, `docs:`, `refactor:`, `chore:`.
- One concern per PR. Update the README/docs when behaviour changes.
- CI must pass: `go vet`, `go test`, frontend `tsc -b && vite build`.
## Issue triage
When filing a bug please include:
1. The steps to reproduce.
2. The expected and actual behaviour.
3. Logs from `docker logs mediastation-go` (or stdout if running locally).
4. Your deployment context (NAS model, OS, Docker version).
Thanks for keeping the project healthy!