ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기pypa
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Mobile-first competition registration, live judging and result computation platform, built against the Functional Specification Document (v1.0, August 2026).
A full-stack implementation covering all five roadmap phases from FSD §16:README 전문 보기 ↗Mobile-first competition registration, live judging and result computation platform, built against the Functional Specification Document (v1.0, August 2026).
A full-stack implementation covering all five roadmap phases from FSD §16:
backend/ Node/Express API — deploys to Netlify Functions
migrations/ 12 numbered SQL migrations (schema, triggers, RLS lockdown)
src/
services/scoring/ The pure ranking engine — aggregation, tie-breaks, grades (FSD §7)
services/results/ Result computation, publication lifecycle, standings, recompute (FSD §7.7)
modules/ One folder per API resource, mounted in src/app.ts
middleware/ auth, authorize (FSD §3.2 permission matrix), rate limiting, event context
tests/scoring/ 37 tests reproducing the FSD §7.5 worked example exactly (AC-09)
netlify/functions/api.ts Serverless entry point (wraps the same Express app)
frontend/ React + Vite PWA — deploys to Vercel
src/features/judge/ The 10 judge screens (FSD §6) — offline-first, bottom nav
src/features/admin/ The 19 admin screens (FSD §5) — sidebar desktop / bottom-bar mobile
src/lib/offlineQueue.ts IndexedDB queue with idempotency keys (FSD §6.8)
src/styles/tokens.css Design tokens — the single source shared with /design mocks
design/ Static HTML mock screens (light + dark), built from the same CSS as the real app
docs/ Deployment guide, API reference, open questions for the committee
cd backend
cp .env.example .env # fill in DATABASE_URL and SUPABASE_SERVICE_ROLE_KEY
npm install
npm run db:migrate # applies all 12 migrations
npm run db:lockdown # verifies row-level security is on every table
npm run db:seed:demo # Super Admin + a populated demo event (see below)
npm run dev # http://localhost:4000
cd frontend
cp .env.example .env # VITE_API_BASE_URL, VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY
npm install
npm run dev # http://localhost:5173
Sign in with the Super Admin credentials printed by db:seed, or (with db:seed:demo) judge1/judge2/judge3/coordinator, password JudgeDemo1.
The demo seed reproduces FSD §7.5 exactly: open "Saturday Morning — Main Stage", score chest 118/104/132/145 in Solo Song — Junior Girls as 9/8/9, 8.5/9/8.5, 7.5/8/7, 6.5/7/6.5 across the three judge logins, then check the item result — it should match the published table (118 first, 104 second on the tie-break, 132 third, 145 unplaced) to the decimal.
cd backend && npm test # 37 tests, scoring engine — see tests/scoring/ranking.test.ts
Coverage is enforced at 90% statements/functions on src/services/scoring/** (vitest.config.ts) per FSD §11.6: "Automated test coverage required on the scoring and result engine specifically; this is the component where a defect is most expensive."
| Decision | Why | Where |
|---|---|---|
| Netlify Functions + Supabase Realtime broadcast, not Socket.IO | Serverless has no persistent process; FSD §3.3 makes realtime "a convenience layer, never a correctness dependency" so polling fallback is built in everywhere | backend/src/services/realtime.ts |
| Custom JWT auth, not Supabase Auth | AC-02 requires zero self-registration routes; ADM-01 needs lockout, forced password change, device pinning that Supabase Auth doesn't model | backend/src/modules/auth/, backend/src/services/auth/ |
| RLS + revoked grants on every table | The Supabase anon key ships in the frontend bundle; PostgREST must be closed even though the app never uses it | backend/migrations/0011_security_lockdown.sql |
| Pure scoring engine, no DB access | Makes AC-09 a unit test instead of an integration test; the whole tie-break cascade is testable in isolation | backend/src/services/scoring/ |
| IndexedDB queue keyed by idempotency key generated at confirm time, not send time | The only way a retried/queued submission can never double-write (FSD §6.8, JDG-06-05) | frontend/src/lib/offlineQueue.ts |
See docs/DEPLOYMENT.md for hosting details, docs/API.md for the full endpoint reference, and docs/OPEN-QUESTIONS.md for the FSD §17 committee decisions this build assumed defaults for.