style: format dev docs and hook config
This commit is contained in:
28
.air.toml
28
.air.toml
@@ -6,32 +6,12 @@ cmd = "just build-dev"
|
||||
entrypoint = "./tmp/server"
|
||||
full_bin = "./tmp/server"
|
||||
delay = 300
|
||||
exclude_dir = [
|
||||
".git",
|
||||
".mise",
|
||||
"dist",
|
||||
"node_modules",
|
||||
"tmp",
|
||||
]
|
||||
exclude_file = [
|
||||
"mal.db",
|
||||
"mal.db-shm",
|
||||
"mal.db-wal",
|
||||
]
|
||||
exclude_regex = [
|
||||
"_test\\.go",
|
||||
]
|
||||
exclude_dir = [".git", ".mise", "dist", "node_modules", "tmp"]
|
||||
exclude_file = ["mal.db", "mal.db-shm", "mal.db-wal"]
|
||||
exclude_regex = ["_test\\.go"]
|
||||
exclude_unchanged = true
|
||||
follow_symlink = false
|
||||
include_ext = [
|
||||
"css",
|
||||
"go",
|
||||
"gohtml",
|
||||
"html",
|
||||
"sql",
|
||||
"toml",
|
||||
"ts",
|
||||
]
|
||||
include_ext = ["css", "go", "gohtml", "html", "sql", "toml", "ts"]
|
||||
kill_delay = "500ms"
|
||||
log = "air-build.log"
|
||||
send_interrupt = true
|
||||
|
||||
23
README.md
23
README.md
@@ -12,13 +12,20 @@
|
||||
<img alt="License" src="https://img.shields.io/badge/license-MIT-green?style=flat-square" />
|
||||
</p>
|
||||
|
||||
MyAnimeList is a small self-hosted anime tracker and playback app. It keeps the catalog, watchlist, progress tracking, and player in one place, backed by a single SQLite database and a single Go server.
|
||||
MyAnimeList is a small self-hosted anime tracker and playback app. It keeps the catalog, watchlist,
|
||||
progress tracking, and player in one place, backed by a single SQLite database and a single Go
|
||||
server.
|
||||
|
||||
Most of the UI is rendered on the server. HTMX handles lightweight updates like pagination and watchlist changes, while TypeScript is kept for the parts that need real browser state: the video player, search page, theme handling, and skip segment editor. The app also includes local users, API tokens, subtitle support, playlist rewriting, provider integrations, migrations, and startup data fixes.
|
||||
Most of the UI is rendered on the server. HTMX handles lightweight updates like pagination and
|
||||
watchlist changes, while TypeScript is kept for the parts that need real browser state: the video
|
||||
player, search page, theme handling, and skip segment editor. The app also includes local users, API
|
||||
tokens, subtitle support, playlist rewriting, provider integrations, migrations, and startup data
|
||||
fixes.
|
||||
|
||||
## Running
|
||||
|
||||
Requires [`mise`](https://mise.jdx.dev/), a C compiler for SQLite, and the tools managed in `.mise.toml`.
|
||||
Requires [`mise`](https://mise.jdx.dev/), a C compiler for SQLite, and the tools managed in
|
||||
`.mise.toml`.
|
||||
|
||||
```bash
|
||||
mise install
|
||||
@@ -28,11 +35,17 @@ go run ./cmd/user <username> <password>
|
||||
just dev
|
||||
```
|
||||
|
||||
The app starts on `http://localhost:3000` by default. Configuration comes from environment variables, and a local `.env` file is loaded automatically. The most useful options are `PORT`, `DATABASE_FILE`, `PLAYBACK_PROXY_SECRET`, `EPISODE_AVAILABILITY_MODE`, and `ANIMESCHEDULE_API_TOKEN`.
|
||||
The app starts on `http://localhost:3000` by default. Configuration comes from environment
|
||||
variables, and a local `.env` file is loaded automatically. The most useful options are `PORT`,
|
||||
`DATABASE_FILE`, `PLAYBACK_PROXY_SECRET`, `EPISODE_AVAILABILITY_MODE`, and
|
||||
`ANIMESCHEDULE_API_TOKEN`.
|
||||
|
||||
## Development
|
||||
|
||||
The codebase is split between Go feature packages, external integrations, server-rendered templates, and a small frontend asset pipeline. `cmd/server` starts the web app, `cmd/user` contains local admin tools, `internal` holds the application modules, `integrations` holds provider clients, and `templates`, `static`, and `dist` contain the UI.
|
||||
The codebase is split between Go feature packages, external integrations, server-rendered templates,
|
||||
and a small frontend asset pipeline. `cmd/server` starts the web app, `cmd/user` contains local
|
||||
admin tools, `internal` holds the application modules, `integrations` holds provider clients, and
|
||||
`templates`, `static`, and `dist` contain the UI.
|
||||
|
||||
The common development commands are in the `justfile`.
|
||||
|
||||
|
||||
20
lefthook.yml
20
lefthook.yml
@@ -14,29 +14,39 @@
|
||||
"lint:ts":
|
||||
{
|
||||
"glob": "*.{ts,js,tsx,jsx}",
|
||||
"run": "bunx oxlint --ignore-path .oxlintignore {staged_files} --max-warnings 0 --tsconfig ./tsconfig.json --type-aware",
|
||||
"run":
|
||||
"bunx oxlint --ignore-path .oxlintignore {staged_files} --max-warnings 0 --tsconfig
|
||||
./tsconfig.json --type-aware",
|
||||
},
|
||||
"go-fmt":
|
||||
{
|
||||
"glob": "*.go",
|
||||
"run": 'files=$(gofmt -l {staged_files}); test -z "$files" || (printf "go files need formatting:\n%s\n" "$files"; exit 1)',
|
||||
"run":
|
||||
'files=$(gofmt -l {staged_files}); test -z "$files" || (printf "go files need
|
||||
formatting:\n%s\n" "$files"; exit 1)',
|
||||
},
|
||||
"go-lint":
|
||||
{
|
||||
"glob": "*.go",
|
||||
"run": 'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{} golangci-lint run --new-from-rev=HEAD ./{}',
|
||||
"run":
|
||||
'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{}
|
||||
golangci-lint run --new-from-rev=HEAD ./{}',
|
||||
},
|
||||
"go-test":
|
||||
{
|
||||
"glob": "*.go",
|
||||
"run": 'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{} go test -count=1 ./{}',
|
||||
"run":
|
||||
'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{} go test
|
||||
-count=1 ./{}',
|
||||
},
|
||||
"ts-typecheck": { "glob": "*.ts", "run": "bunx tsc -p tsconfig.json --noEmit" },
|
||||
"build-assets": { "glob": "*.{ts,css}", "run": "bun run build:assets" },
|
||||
"go-build":
|
||||
{
|
||||
"glob": "*.go",
|
||||
"run": 'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{} go build -o /dev/null ./{}',
|
||||
"run":
|
||||
'printf "%s\n" {staged_files} | xargs -n1 dirname | sort -u | xargs -I{} go build -o
|
||||
/dev/null ./{}',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user