ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
PYPA Marking System — competition registration, live judging and result computation.
Translation pending
OtherTypeScript · HTMLGitHub @alenachankunjuOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
pypa
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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:Read the full 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.