CLAUDE.md 2.0 KB

jamtrack — Project Guidelines

Inherits all preferences from ~/.claude/CLAUDE.md.

Project overview

jamtrack is a PocketBase-backed web application for tracking jam sessions. It uses templ for type-safe HTML templates and modernc.org/sqlite (via PocketBase) for persistence.

Package layout

Current structure (do not reorganise without discussion):

main.go          — single binary entry point; no /cmd/ subdirectory
views/           — templ templates and generated *_templ.go files (root-level package)
internal/query/  — domain query/ranking logic
internal/web/    — HTTP handlers, middleware, static asset embedding
migrations/      — PocketBase migration files (blank-import side-effect package)
pb_data/         — PocketBase runtime data (not committed)
bin/             — build output (not committed)
  • Internal packages are domain-driven under internal/.
  • views/ lives at the root because go tool templ generate targets it directly.
  • Do not apply the "Go standard layout" (the popular GitHub template). Follow official guidance from the Go blog, Go wiki, and go.dev instead.

Tooling

  • just gen — regenerate templ templates (go tool templ generate)
  • just dev — live-reload dev server with templ watch proxy
  • just build — generate + build binary to bin/jamtrack
  • just testgo test -race ./...
  • go tool staticcheck ./... — static analysis

Dependencies already approved

These are in use and do not require further vetting:

Module Role
github.com/pocketbase/pocketbase Backend framework (auth, DB, admin UI, router)
github.com/a-h/templ Type-safe HTML templating
modernc.org/sqlite SQLite driver (pulled in by PocketBase)
github.com/spf13/cobra CLI framework (pulled in by PocketBase)
honnef.co/go/tools (staticcheck) Static analysis (go tool)
golang.org/x/... Extended stdlib

Any module not in this list requires explicit approval before being added.

PANIC: session(release): write data/sessions/4/1/41f2f65936c24ca1: no space left on device

PANIC

session(release): write data/sessions/4/1/41f2f65936c24ca1: no space left on device
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/session@v1.0.3/session.go:204 (0xb13e07)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:80 (0x967b75)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:114 (0x967bf6)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/recovery.go:161 (0x15baec4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/logger.go:40 (0x96b257)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:187 (0x972959)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:304 (0x973a01)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/macaron.go:218 (0x96c572)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:3311 (0x85a5cd)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:2073 (0x837f6f)
/my/cache/.heroku/go/go1.26.3/go/src/runtime/asm_amd64.s:1771 (0x493380)