···11+# Repository Guidelines
22+33+## Project Structure & Module Organization
44+- `cmd/` – entry‑point binaries (e.g., `xesite`, `patreon-saasproxy`). Each subdirectory contains a `main.go`.
55+- `internal/` – reusable Go packages for core logic.
66+- `dhall/` – configuration files written in Dhall, used by the site generator.
77+- `lume/` – static content (blog posts, videos) in Markdown/MDX.
88+- `scripts/` – helper scripts (e.g., `fabricate-generation`, `imgoptimize`).
99+- `manifest/` – Kubernetes manifests for deployment.
1010+- `var/` – generated artifacts (compiled binaries, assets).
1111+1212+## Build, Test, and Development Commands
1313+- `go build ./cmd/xesite` – compile the main site binary.
1414+- `go run ./cmd/xesite --site-url https://preview.xeiaso.net --devel` – start the dev server (see `package.json` script `dev`).
1515+- `npm run dev` – alias for the above Go command.
1616+- `npm run deploy` – deploy the site to production.
1717+- `go test ./...` – run any Go tests (currently none).
1818+1919+## Coding Style & Naming Conventions
2020+- Go code follows `gofmt`; run `go fmt ./...` before committing.
2121+- Use `camelCase` for variables/functions, `PascalCase` for exported types.
2222+- Indentation: tabs (default `go fmt`).
2323+- Dhall files use kebab‑case filenames (e.g., `my-config.dhall`).
2424+- Bash/Node scripts use `snake_case` for variable names.
2525+2626+## Testing Guidelines
2727+- Add tests using the `testing` package; name files `*_test.go` and place them alongside the package.
2828+- Run `go test ./...` to execute all tests.
2929+3030+## Commit & Pull Request Guidelines
3131+- Commit messages follow the conventional format:
3232+ - `type(scope): short description`
3333+ - Example: `feat(cli): add --site-url flag`.
3434+- Keep commits atomic and self‑contained.
3535+- PR description must include:
3636+ - Summary of changes.
3737+ - Related issue number (if any).
3838+ - Verification steps (e.g., run `go run ./cmd/xesite`).
3939+4040+## Security & Configuration Tips
4141+- Secrets live in `.env` and must never be committed; `.gitignore` already excludes it.
4242+- When adding new environment variables, document them in `README.md` or a dedicated config file.
4343+