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.