Website for Brackt.com
Find a file
Chris Parsons 2d6dd6ec9f
Refactor expected values form to batch save all participants (#4)
* fix: remove probability sum validation and add batch save with total EV

- Remove the requirement that manual probabilities sum to 1.0, allowing
  partial distributions (e.g. when a participant has <100% chance of top 8)
- Replace per-row save buttons with a single "Save All" button that submits
  all participants at once
- Add a Total EV row at the bottom of the table summing all participant EVs
- Update action to batch process all participants from a single form submission

https://claude.ai/code/session_01WHRynBCcugSK7HHEmN6Yuy

* fix: validate participantIds server-side instead of trusting form input

Fetch participants from the DB in the action using the season ID from
the URL params, eliminating the untrusted participantIds hidden field.
Remove the now-unused hidden input from the frontend form.

https://claude.ai/code/session_01WHRynBCcugSK7HHEmN6Yuy

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-19 15:57:05 -08:00
.github/workflows ci: reorganize workflow dependencies and remove standalone test workflow 2025-10-21 12:57:03 -07:00
app Refactor expected values form to batch save all participants (#4) 2026-02-19 15:57:05 -08:00
cypress ci: reorganize workflow dependencies and remove standalone test workflow 2025-10-21 12:57:03 -07:00
database fix: exclude database/context from browser bundle to fix Docker build (#2) 2026-02-19 11:54:32 -08:00
drizzle Change participant expectedValue from integer to decimal (#1) 2026-02-19 11:26:40 -08:00
plans feat: add FIFA World Cup 48-team bracket template with group stage and projected scoring 2026-02-14 22:30:12 -08:00
public feat: add icon support for sports with file upload and active seasons display 2025-10-13 10:30:47 -07:00
scripts refactor: migrate server code from JavaScript to TypeScript with build pipeline 2025-10-18 22:16:04 -07:00
server feat: implement daily standings snapshot system with admin management interface 2025-11-14 09:15:58 -08:00
.dockerignore Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
.env.example refactor: consolidate migration and app containers into single production image 2025-10-13 11:01:12 -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 feat: implement sports season expected value calculations and probability updates 2025-11-21 22:05:50 -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 refactor: reorganize Docker file structure and import types separately in server.ts 2025-10-18 22:20:06 -07:00
drizzle.config.ts Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
package-lock.json feat: add recharts library and implement PointProgressionChart component for historical views 2025-11-14 21:18:34 -08:00
package.json feat: add recharts library and implement PointProgressionChart component for historical views 2025-11-14 21:18:34 -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 refactor: reorganize Docker file structure and import types separately in server.ts 2025-10-18 22:20:06 -07: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: exclude database/context from browser bundle to fix Docker build (#2) 2026-02-19 11:54:32 -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.