rentease/AGENTS.md

2.2 KiB

Repository Guidelines

Project Structure & Module Organization

  • main.go: application entrypoint (HTTP server).
  • internal/: core app code by layer:
    • server/ (HTTP handlers/routes), service/ (business logic), repository/ (data access), driver/ (external integrations), config/ (env config), view/ (templ views/viewmodels).
  • internal/view/*.templ are source templates; generated files are internal/view/*_templ.go.
  • cmd/cron/: cron entrypoint.
  • assets/: static assets. docs/: documentation/images. scripts/ and tmp/: tooling/artifacts.
  • Tests live next to code as *_test.go.

Build, Test, and Development Commands

  • make dev: run local dev stack with Docker Compose and hot reload.
  • make run: build and run production image locally.
  • make test: run go test ./....
  • make format: run templ generate, templ fmt, and go fmt.
  • make lint: run golangci-lint run ./....
  • make stop: stop dev containers.
  • Local (without Docker): go run ., go test ./....

Coding Style & Naming Conventions

  • Go style is standard go fmt (tabs, canonical imports).
  • Package names: lowercase, no underscores.
  • File names: lowercase with underscores when needed.
  • Exported identifiers: PascalCase; unexported: camelCase.
  • Keep handler/controller code thin; place business rules in internal/service.

Testing Guidelines

  • Use Go testing with table-driven tests where practical.
  • Name files *_test.go; tests TestXxx; benchmarks BenchmarkXxx.
  • Cover success and failure paths for changed logic.
  • Run make test (or go test ./...) before opening a PR.

Commit & Pull Request Guidelines

  • Prefer Conventional Commits: feat(scope): ..., fix(scope): ..., chore: ....
  • Keep commits focused and atomic.
  • PRs should include: clear summary, linked issue (e.g., #51), and screenshots for UI changes.
  • Call out config/env changes and any migration or deployment impact.

Security & Configuration Tips

  • Config is environment-driven with APP_ prefix (see internal/config/config.go).
  • Example parser model override: APP_OPENAI_MODEL=gpt-5-nano.
  • Never commit secrets; keep them in local .env / deployment secret manager.