2.9 KiB
2.9 KiB
Repository Guidelines
Project Structure & Module Organization
- Root: orchestration (
podman-compose*.yml), container builds (Dockerfile*),start.sh,.env.examplefor Canva credentials/scopes. - Frontend:
frontend/(Vue 3 + Pinia + Vite). Source infrontend/src/(components/,views/,stores/,router/,services/). Builds land infrontend/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.goexposes OAuth (/auth/canva/*) and design proxies (/designs,/designs/{id},/designs/start-session).
Build, Test, and Development Commands
- Install deps:
pnpm install(root) — populatesfrontend/andcanva-app/. - Frontend dev:
pnpm dev(orcd frontend && pnpm dev) -> Vite on port 3000. - Frontend builds:
pnpm build(app),pnpm build-lib(library),pnpm previewto serve the built app. - Canva App dev:
pnpm canva-app:dev-> Vite on port 8080; build withpnpm canva-app:build. - Lint/format:
pnpm lintandpnpm format. - API local run:
go run ./server-go(requires Go 1.25+, env vars below). - Containers (recommended):
./start.shorpodman 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 infrontend/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/), andgo 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, andpnpm build; for API changes, ensurego 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.exampleto.env; setCANVA_CLIENT_ID,CANVA_CLIENT_SECRET,CANVA_SCOPES(space-separated, approved list),VITE_API_BASE(http://127.0.0.1:4000by default), optionalCANVA_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.