프로젝트 소개

Go Performance Starter는 소규모 SaaS 제품을 위한 의견 집약적(server-rendered) 시작점입니다. Go(Chi), templ 템플릿, HTMX+Alpine.js, Tailwind CSS, Supabase(Auth + PostgreSQL), Cloudflare를 결합합니다. 지향점은 최소 JavaScript를 가진 서버 렌더링 Go이며, 성능 예산과 AI 에이전트 가드레일은 단순히 설명만 하지 않고 CI에서 강제됩니다. 제공 사항 인증은 Supabase 이메일/비밀번호를 사용하며 서버 측 JWT 검증으로 동작합니다. 또한 익명 게스트 로그인도 지원해 데모 방문자가 회원가입 없이도 실제 정체성을 얻습니다. 멀티TENANT성은 PostgreSQL Row Level Security로 구현됩니다: 요청 JWT 클레임은 스코프된 트랜잭션(SET LOCAL ROLE 및 request.jwt.claims)을 통해 모든 쿼리에 전달되므로, auth.uid()가 RLS 정책 내에서 해석되고 레포지토리 계층에서 TENANT 스코핑을 건너뛸 수 없습니다. README에 따르면 이는 Supabase를 load-bearing 의존으로 만든다고 합니다. 벤더 중립 인증을 위해서는 auth 미들웨어, RLS scope helper, 정책을 다시 작성해야 합니다. 동반된 데모는 스택을 점검하기 위한 것입니다: 각 지원 HTMX/Alpine 패턴을 보여주는 /patterns 쇼케이스와 잘못된 정답이 실시간으로 RLS 보호 행으로 저장되는 개인 flashcard가 되는 아키텍처 퀴즈가 있습니다. 백그라운드 작업은 Supabase admin API로 비활성 게스트의有效期를 만료시킵니다. 개발자 도구에는 타입 안전 templ 템플릿의 Go 컴파일, repository 패턴 기반 sqlc 코드 생성, air 통한 hot reload, Taskfile 자동화, golangci-lint, Prometheus metrics, log/slog 구조화 로그, 건강 체크, CI/CD가 포함됩니다. 역할 기반 디자인 시스템은 bg-surface, text-muted-foreground와 같은 시맨틱 토큰을 사용하며, 다크 모드는 컴포넌트가 아닌 토큰을 전환하고 CI에서 raw gray 및 dark: drift를 체크합니다. 성능 예산 README에 명시된 강제 예산: P95 응답 시간 100ms 미만, 바이너리 크기 20MB 미만, Docker 이미지 30MB 미만, 정상 상태 메모리 128MB 미만, 시작 시간 500ms 미만. task test:performance 및 task test:binary-size로 검증됩니다. 에이전트 지원 개발 프로젝트는 계층형 AI 헌법을 탑재합니다: CLAUDE.md에 halt-on-violation 규칙이, .claude/engineering.md, workflow.md, stack.md에 엔지니어링 기본값·절차·스택 사실이 담깁니다. AGENTS.md는 task agents:build로 해당 계층에서 생성되며, CI는 drift 발생 시 실패합니다. 복잡하지 않은 기능이 아닌 기능은 Architect → Coder → Reviewer의 3단계 흐름을 따릅니다. Done의 단일 정의는 포매팅·lint·레이스 테스트·drift 체크·바이너리 크기·보안 스캔을 수행하는 task ci quality gate이며, 에이전트는threshold를 낮추지 않고 통과시켜야 합니다. 각 아키텍처 결정 기록(ADR)에는 규칙을 체크로 매핑하는 Enforcement 섹션이 포함되어 있습니다. task check:adr는 secret scanner를 포함한 테스트 가능한 ADR 결과를 검증하는 결정론적 스위트입니다. 체크는 경고로 시작해 Clean 기간이나 실제 단속 후 블로킹으로 승격됩니다. 두 개의 훅이 블로킹입니다: Stop-gate는 테스트 실패나 blocker가 있는 상태에서 에이전트가 턴을 끝내지 못하게 막고, PreToolUse 가드는 기존 ADR·AGENTS.md·생성 코드의 수편집을 방지합니다. 둘 다 kill-switch를 갖춥니다. README는 load-bearing 부품과 제거 가능한 부품을 표시하고, enforcement suite 전체를 prune하는 방법도 안내합니다. 루트의 versions.json은 스택 pin을 나열한 공개 소비 계약으로 설명됩니다. task versions:check은 키가 저장소 내 소스와 불일치하면 실패하며, 키 추가는 허용되지만改名 또는 제거는 breaking change입니다. 시작과 범위 선행 요구사항: Go 1.26+, Docker, Docker Compose, Task, Node.js 20+. 빠른 시작은 클론, .env.example 복사, 데이터베이스 시작, 마이그레이션 실행, sqlc 타입 생성, Go 및 npm 의존성 설치, hot reload로 포트 4000 기본 제공 데브 서버 실행을 다룹니다. 일회성 Supabase 비밀번호 재설정 템플릿 구성도 문서화되어 있습니다. 사용 가능한 태스크로는 dev, ci, build, test, coverage, performance 및 binary-size 체크, lint, CSS 빌드, Docker 이미지 빌드 및 보안 스캔이 있습니다. 프로젝트는 MIT 라이선스로 제공됩니다.