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.
Translation pending
Track who's playing ball on Thursdays.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @anthony-df-nguyenOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.