Futbol Veritabanı
8대 리그 클럽·선수·통계—Transfermarkt 데이터
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기RONDO is a football community app that helps people find nearby games and book
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Rondo is a mobile-first football/futsal coordination app built with Next.js App Router + Supabase. It supports player and organizer journeys: discovery, join/payment, match chat, organizer operations, help tickets, wallet ledger records, notifications, and live timer screens.
npm install.env.local (copy from .env.example and fill values).npm run devhttp://localhost:3000Required (current implementation):
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNEXT_PUBLIC_APP_URLPAYMONGO_SECRET_KEYPAYMONGO_WEBHOOK_SECRET_KEYIn the Vercel project Settings → Environment Variables, add every variable from .env.example for Production (and Preview if you use it). Then Redeploy the latest commit.
Set NEXT_PUBLIC_APP_URL to your production URL, e.g. https://rondo-app.vercel.app.
PayMongo webhook URL: https://rondo-app.vercel.app/api/payments/webhook
The code reads ~36 tables, one RPC, and four storage buckets. If the project is
missing any of them, screens come up empty, API routes answer
Could not find the table 'public.…' in the schema cache, and actions fail.
Two files, in this order, in Supabase → SQL Editor:
supabase/schema.sql — fresh projects only. Base tables, triggers, avatars bucket.supabase/RUN_ALL_IN_SUPABASE.sql — everything else, safe to re-run. Covers every
file under supabase/migrations/ plus organizations, reels, scout clips, and
tournament rooms. Re-run it after every deploy that adds a migration.Then confirm with either:
supabase/SUPABASE_AUDIT.sql in the SQL Editor — every row must read OK; orGET /api/health with header x-seed-secret: <SEED_SECRET> — returns
{"ok":true} or a missing list naming exactly what to create.supabase/migrations/*.sql remain as the per-change history for supabase db push
workflows; the runner file is generated from them by hand, and
__tests__/supabase/schema-manifest.test.ts fails CI if code references a table the
runner does not create.
Symptoms: every screen empty or erroring, /api/reels returning 500, guest sign-in
failing in the browser while POST /api/auth/guest returns 200.
supabase/schema.sql.supabase/RUN_ALL_IN_SUPABASE.sql, then supabase/SUPABASE_AUDIT.sql (all OK).SUPABASE_SERVICE_ROLE_KEY server-side.NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNEXT_PUBLIC_APP_URL=https://rondo-app.vercel.appSEED_SECRET (for /api/health and /api/seed)GET /api/health with x-seed-secret → {"ok":true}. Guest from / reaches
/feed; within a minute the feed shows placeholder open games.instrumentation.ts pins server rendering to
Asia/Manila (override with APP_TIMEZONE). Without it, Vercel renders in UTC
and an 8 PM game shows as 12:00 PM until the page hydrates.POST /api/seed/organizers runs both on demand.lib/venues/pitch-photos.ts, then shipped night-scene art in
public/scenes/. BGC Turf has its real photo (public/venues/bgc-turf.jpg);
to add another venue, drop its photo in public/venues/ and add an entry to
PITCH_PHOTOS.app/manifest.ts and public/icons/ make Rondo an
add-to-home-screen app that opens on /feed.lib/navigation/tab-routes.ts);
every other screen gets a back button and owns the bottom edge for its action bar.FREE_DROP_OUT_HOURS in
lib/match/drop-out.ts). Inside that window they're sent to Help with the match
attached. All of it lives in lib/wallet/refunds.ts and is safe to repeat.20261002000100_private_match_pay_after_approval.sql)./login via Face ID, Touch ID, Windows Hello, or a security keyprofiles.username; password login resolves @handle → email server-side/feed, /feed/map, /games/[id], /games/[id]/join, /games/[id]/payment, /games/[id]/chat, /my-games, /profile/[id], /help, /notifications, /tournaments, /tournaments/[id], /community (social feed + players)/organizer/dashboard, /organizer/create, /organizer/games/[id]/manage, /organizer/games/[id]/payments, /organizer/tournaments, /organizer/tournaments/create, /organizer/tournaments/[id]/manage/organizers/[id]/admin/tickets, /admin/tickets/[id]Grant the admin role via the Supabase SQL editor (clients cannot self-promote —
the protect_profile_role trigger blocks it):
update public.profiles set role = 'admin' where id = '<user-uuid>';
Admins get the ticket dashboard at /admin/tickets: filter/sort/search tickets,
change status, reply to users, and leave internal notes (hidden from users by RLS).
lib/paymongo/verify-signature.ts).payment_attempts with
anomaly flags (failure streaks, high-value attempts from new accounts) for
admin review.Use the Supabase Dashboard → Reports → Query Performance (pg_stat_statements)
to find slow queries. Hot list queries are covered by indexes (see
20260610000200_admin_tickets_payment_security.sql); list endpoints paginate
with range queries.
supabase/RUN_ALL_IN_SUPABASE.sql, then SUPABASE_AUDIT.sql or /api/health shows no MISSING.npm run build before release.