Scorigami FC
Todos os placares finais da história do Brasileirão, das principais ligas europeias e de outras ligas das Américas em um gráfico: quais já aconteceram, quantas vezes e quais nunca aconteceram.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Mobile-first web app for tracking who's playing pickup basketball each week. See prd.md in the project for the full spec — this scaffold implements the v1 build order: organizer auth, regulars roster, events, attendees with invite status, +1s, and payment tracking.
ORGANIZER_EMAILS allowlistNote: this project is on Next.js 16, which renamed Middleware to Proxy (
src/proxy.ts, same functionality/API as middleware). If anything looks unfamiliar versus older Next.js docs, checknode_modules/next/dist/docsor the Next.js 16 upgrade guide.
Database — pick one:
docker compose up -d starts a local Postgres 16 container (see docker-compose.yml). No further setup needed — the default DATABASE_URL in .env.example already points at it.src/db/index.ts picks the driver automatically: a neon.tech URL uses Neon's HTTP driver, anything else (like local Postgres) uses node-postgres.
Create a Google OAuth client in the Google Cloud Console:
http://localhost:3000/api/auth/callback/google (add your Vercel domain's equivalent once deployed)Copy the env file and fill it in:
cp .env.example .env.local
DATABASE_URL — already set for local Docker Postgres; swap in your Neon string for productionORGANIZER_EMAILS — comma-separated Gmail addresses for the 3 organizersAUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET — from the Google OAuth clientAUTH_SECRET — generate with npx auth secretInstall dependencies:
npm install
Push the schema to your database:
npm run db:push
Run the dev server:
npm run dev
Visit http://localhost:3000 — you'll be redirected to /login. Sign in with one of the ORGANIZER_EMAILS addresses.
src/
auth.ts # NextAuth config: Google provider + organizer allowlist
proxy.ts # Route protection (Next 16's renamed middleware)
db/
schema.ts # Drizzle schema: users, regulars, events, eventAttendees, plusOnes
index.ts # Drizzle client (Neon HTTP driver)
app/
login/ # Sign-in page (outside the authed route group)
(app)/ # Everything behind login
layout.tsx # Shared shell + bottom nav
page.tsx # Events list + create event
actions.ts # Server actions (roster + event CRUD, invite/paid toggles, +1s)
roster/page.tsx # Regulars roster CRUD
events/[eventId]/page.tsx # Event detail: attendees, invite status, +1s, payment
See src/db/schema.ts for the full Drizzle schema and inline comments. Summary:
ORGANIZER_EMAILS)isOrganizer)date only (no location — always the same spot), archived (status closed, just hidden from the main list) or hard-deleted (removed from stats too)inviteStatus (invited / confirmed / declined / no_show) and paid.env.local in the Vercel project settings (use your production Google OAuth redirect URI: https://<your-domain>/api/auth/callback/google).npm run db:push once (locally, pointed at the same DATABASE_URL) to make sure the production database has the schema.Run npm test before pushing (needs docker compose up -d). See tests/README.md for details.