tanabata/CLAUDE.md
Masahiko AMANO 04d2dfa16e docs(project): document scoped commit naming convention in CLAUDE.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 21:41:22 +03:00

2.0 KiB
Raw Permalink Blame History

Tanabata File Manager

Multi-user, tag-based web file manager for images and video.

Architecture

Monorepo: backend/ (Go) + frontend/ (SvelteKit).

  • Backend: Go + Gin + pgx v5 + goose migrations. Clean Architecture.
  • Frontend: SvelteKit SPA + Tailwind CSS + CSS custom properties.
  • DB: PostgreSQL 14+.
  • Auth: JWT Bearer tokens.

Key documents (read before coding)

  • openapi.yaml — full REST API specification (36 paths, 58 operations)
  • docs/GO_PROJECT_STRUCTURE.md — backend architecture, layer rules, DI pattern
  • docs/FRONTEND_STRUCTURE.md — frontend architecture, CSS approach, API client
  • docs/Описание.md — product requirements in Russian
  • backend/migrations/001_init.sql — database schema (4 schemas, 16 tables)

Design reference

The docs/reference/ directory contains the previous Python/Flask version. Use its visual design as the basis for the new frontend:

  • Color palette: #312F45 (bg), #9592B5 (accent), #444455 (tag default), #111118 (elevated)
  • Font: Epilogue (variable weight)
  • Dark theme is primary
  • Mobile-first layout with bottom navbar
  • 160×160 thumbnail grid for files
  • Colored tag pills
  • Floating selection bar for multi-select

Backend commands

cd backend
go run ./cmd/server          # run dev server
go test ./...                # run all tests

Frontend commands

cd frontend
npm run dev                  # vite dev server
npm run build                # production build
npm run generate:types       # regenerate API types from openapi.yaml

Conventions

  • Go: gofmt, no global state, context.Context as first param in all service methods
  • TypeScript: strict mode, named exports
  • SQL: snake_case, all migrations via goose
  • API errors: { code, message, details? }
  • Git: conventional commits with scope — type(scope): message
    • (backend) for Go backend code
    • (frontend) for SvelteKit/TypeScript code
    • (project) for root-level files (.gitignore, docs/reference, structure)