Files
web-hosts/chuckie.coppertone.tech/app/AGENTS.md
2025-12-26 13:38:04 +01:00

38 lines
2.9 KiB
Markdown

# Repository Guidelines
## Project Structure & Module Organization
- Root: orchestration (`podman-compose*.yml`), container builds (`Dockerfile*`), `start.sh`, `.env.example` for Canva credentials/scopes.
- Frontend: `frontend/` (Vue 3 + Pinia + Vite). Source in `frontend/src/` (`components/`, `views/`, `stores/`, `router/`, `services/`). Builds land in `frontend/dist/`.
- Canva App: `canva-app/` (React + Canva Apps SDK) served on port 8080 for in-Canva panel tests.
- Go API: `server-go/` (Go 1.25). `main.go` exposes OAuth (`/auth/canva/*`) and design proxies (`/designs`, `/designs/{id}`, `/designs/start-session`).
## Build, Test, and Development Commands
- Install deps: `pnpm install` (root) — populates `frontend/` and `canva-app/`.
- Frontend dev: `pnpm dev` (or `cd frontend && pnpm dev`) -> Vite on port 3000.
- Frontend builds: `pnpm build` (app), `pnpm build-lib` (library), `pnpm preview` to serve the built app.
- Canva App dev: `pnpm canva-app:dev` -> Vite on port 8080; build with `pnpm canva-app:build`.
- Lint/format: `pnpm lint` and `pnpm format`.
- API local run: `go run ./server-go` (requires Go 1.25+, env vars below).
- Containers (recommended): `./start.sh` or `podman compose -f podman-compose.dev.yml up --build`. Compose auto-installs deps in each container and mounts:
- `./frontend -> /home/node/app/frontend`
- `./canva-app -> /home/node/app/canva-app`
- API binary from `Dockerfile.api`
## Coding Style & Naming Conventions
- JavaScript/Vue: 2-space indent; ESLint + Prettier + Tailwind plugin via `pnpm lint`. Use `@/` alias and keep Canva API calls in `frontend/src/services`.
- Go: standard `gofmt`; keep handlers small and prefer helper helpers for Canva HTTP proxying.
- No mock/fake endpoints—keep code paths aligned with live Canva Connect API.
## Testing Guidelines
- Tests: prefer Vitest, Playwright (`frontend/tests/`), and `go test ./...` for API code. Add a happy-path and one Canva error case per feature.
## Commit & Pull Request Guidelines
- Use imperative, descriptive messages; Conventional Commit prefixes (`feat:`, `fix:`, `chore:`) are encouraged for changelog clarity.
- Before a PR: run `pnpm lint`, relevant tests, and `pnpm build`; for API changes, ensure `go test ./...` passes if tests exist.
- PRs should state intent, linked issues, environment/config changes, and screenshots or GIFs for UI updates.
## Configuration & Security
- Copy `.env.example` to `.env`; set `CANVA_CLIENT_ID`, `CANVA_CLIENT_SECRET`, `CANVA_SCOPES` (space-separated, approved list), `VITE_API_BASE` (`http://127.0.0.1:4000` by default), optional `CANVA_REDIRECT_URI`, `FRONTEND_SUCCESS_URL`, `FRONTEND_ORIGIN`.
- Scopes are not defaulted—missing or invalid scopes break auth. Align redirect/origin with Canva dashboard and the dev compose ports (3000/4000).
- Never commit real secrets or tokens. Rotate immediately if exposed and update the Canva app credentials.