Website for Brackt.com
Find a file
Chris Parsons cf8ac8a765
feat: progressive floor scoring for playoff brackets (#100)
When a participant wins a bracket round, they immediately earn provisional
"floor" points (the averaged minimum they'd receive if eliminated next round).
These update as they advance and are replaced by finalized scores on elimination.

Key changes:
- Add `is_partial_score` column to `participant_results` (migration 0038)
- `processPlayoffEvent`: assign provisional position 5 to non-scoring round
  winners; assign round-appropriate floors to scoring round winners via
  `getGuaranteedMinimumPosition`; add catch-all for unrecognized round names
- `upsertParticipantResult`: guard against un-finalizing rows (never overwrite
  isPartialScore=false with true)
- `calculateBracketPoints`: new function averaging tied bracket tiers
  (5-8 → 20 pts, 3-4 → avg, 1-2 solo); used in `calculateTeamScore` for
  playoff_bracket pattern (pattern-aware, doesn't affect F1/golf scoring)
- `PlayoffBracket`: "In Contention" table for still-active participants;
  AFL double-chance fix (participants who won a later match excluded from
  earlier round's loser list); correct `nextRank` starting position
- Server loader: batch owner DB queries (one query vs N+1); deduplicate
  participantPoints; use calculateBracketPoints for bracket point display
- Clean up Phase/Q-number tracking comments throughout scoring-calculator.ts
- 3 new tests for non-scoring round provisional floor behavior

Also includes a dev admin bypass via DEV_ADMIN_CLERK_ID env var (separate
change on this branch, not part of floor scoring feature).

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 10:27:58 -07:00
.github/workflows ci: reorganize workflow dependencies and remove standalone test workflow 2025-10-21 12:57:03 -07:00
app feat: progressive floor scoring for playoff brackets (#100) 2026-03-10 10:27:58 -07:00
cypress ci: reorganize workflow dependencies and remove standalone test workflow 2025-10-21 12:57:03 -07:00
database feat: progressive floor scoring for playoff brackets (#100) 2026-03-10 10:27:58 -07:00
drizzle feat: progressive floor scoring for playoff brackets (#100) 2026-03-10 10:27:58 -07:00
plans Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
public Add favicons and logo (#62) 2026-03-04 00:23:45 -08:00
scripts refactor: migrate server code from JavaScript to TypeScript with build pipeline 2025-10-18 22:16:04 -07:00
server feat: implement real-time queue updates via socket events in queue actions (#63) 2026-03-04 21:39:54 -08:00
.dockerignore Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
.env.example feat: progressive floor scoring for playoff brackets (#100) 2026-03-10 10:27:58 -07:00
.gitignore ci: add test job to GitHub workflow and setup testing dependencies 2025-10-21 12:47:11 -07:00
.mcp.json feat: Implement event management for sports seasons with CRUD operations and UI 2025-10-31 22:13:12 -07:00
CLAUDE.md Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
components.json feat: add theme system with dark mode support and navbar component 2025-10-10 23:30:26 -07:00
cypress.config.js ci: add test job to GitHub workflow and setup testing dependencies 2025-10-21 12:47:11 -07:00
docker-compose.yml feat: add FIFA World Cup 48-team bracket template with group stage and projected scoring 2026-02-14 22:30:12 -08:00
Dockerfile Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
drizzle.config.ts Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
package-lock.json Add Zod validation and expand export/import for EV and results data (#14) 2026-02-20 20:25:25 -08:00
package.json Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
plan.md Add implementation plan for commissioner-without-team feature (#6) 2026-02-20 08:45:09 -08:00
react-router.config.ts feat: implement middleware and context provider for Express integration 2025-10-11 20:56:00 -07:00
README.md Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
server.ts Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
TESTING.md ci: add test job to GitHub workflow and setup testing dependencies 2025-10-21 12:47:11 -07:00
tsconfig.json refactor: update import paths to use absolute paths for better clarity and maintainability 2025-10-24 21:20:19 -07:00
tsconfig.node.json feat: implement Expected Value System with ICM probability calculator 2025-11-17 22:19:46 -08:00
tsconfig.server.json feat: Refactor autopick logic to use unified executeAutoPick function and enhance eligibility checks 2025-10-25 10:14:36 -07:00
tsconfig.vite.json refactor: update import paths to use absolute paths for better clarity and maintainability 2025-10-24 21:20:19 -07:00
vite.config.ts Fix ~/database/context resolving to browser stub during dev SSR (#12) 2026-02-20 16:10:22 -08:00
vitest.config.ts refactor: update import paths to use absolute paths for better clarity and maintainability 2025-10-24 21:20:19 -07:00

Welcome to React Router!

A modern, production-ready template for building full-stack React applications using React Router.

Features

  • 🚀 Server-side rendering
  • Hot Module Replacement (HMR)
  • 📦 Asset bundling and optimization
  • 🔄 Data loading and mutations
  • 🔒 TypeScript by default
  • 🎉 TailwindCSS for styling
  • 💾 PostgreSQL + DrizzleORM
  • 📖 React Router docs

Getting Started

Installation

Install the dependencies:

npm install

Development

Copy .env.example to .env and provide a DATABASE_URL with your connection string.

Run an initial database migration:

npm run db:migrate

Start the development server with HMR:

npm run dev

Your application will be available at http://localhost:5173.

Building for Production

Create a production build:

npm run build

Deployment

Docker Deployment

To build and run using Docker:

# For npm
docker build -t my-app .

# Run the container
docker run -p 3000:3000 my-app

The containerized application can be deployed to any platform that supports Docker, including:

  • AWS ECS
  • Google Cloud Run
  • Azure Container Apps
  • Digital Ocean App Platform
  • Fly.io
  • Railway

DIY Deployment

If you're familiar with deploying Node applications, the built-in app server is production-ready.

Make sure to deploy the output of npm run build

├── package.json
├── package-lock.json (or pnpm-lock.yaml, or bun.lockb)
├── server.js
├── build/
│   ├── client/    # Static assets
│   └── server/    # Server-side code

Styling

This template comes with Tailwind CSS already configured for a simple default starting experience. You can use whatever CSS framework you prefer.


Built with ❤️ using React Router.