Website for Brackt.com
Find a file
Chris Parsons ed4e99b40e
Fix datetime-local to UTC conversion for game scheduling (#138)
* fix: use hidden input for UTC date value in add-game form

The onSubmit handler was setting the datetime-local input's value to an
ISO UTC string (e.g. "2026-03-11T17:00:00.000Z"). datetime-local inputs
only accept the format "YYYY-MM-DDTHH:MM" — values with a 'Z' timezone
suffix are invalid and the browser silently clears the field to "". This
caused the form to submit an empty scheduledAt, which the server treated
as null, so games were always saved without a date.

Fix by keeping the datetime-local input for user interaction (renamed
scheduledAtLocal, not submitted) and writing the converted UTC ISO string
into a separate hidden input named scheduledAt in the onSubmit handler.

Also adds app/lib/date-utils.ts with a localDateTimeToUtcIso helper and
matching tests to document and verify the datetime-local ↔ ISO conversion
behaviour.

https://claude.ai/code/session_0148fgZiXpyvGX8ZX3BFRGCs

* refactor: use localDateTimeToUtcIso in component and clean up tests

- Import and call localDateTimeToUtcIso in the add-game onSubmit handler
  instead of duplicating the conversion inline; also applies the null/
  invalid-date safety from the utility to the component
- Remove the redundant "incompatible with datetime-local" test case (its
  intent is better expressed as a code comment than a test assertion)
- Move the datetime-local incompatibility explanation into a NOTE comment
  on the utility function's JSDoc

https://claude.ai/code/session_0148fgZiXpyvGX8ZX3BFRGCs

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-11 16:22:29 -07:00
.github/workflows Create label-subissues.yaml 2026-03-10 13:40:44 -07:00
.vscode feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07:00
app Fix datetime-local to UTC conversion for game scheduling (#138) 2026-03-11 16:22:29 -07:00
cypress ci: reorganize workflow dependencies and remove standalone test workflow 2025-10-21 12:57:03 -07:00
database Add playoff match game scheduling and odds management (#135) 2026-03-11 14:17:43 -07:00
drizzle Found it in a second spot. 2026-03-11 14:47:19 -07:00
plans Update claude.md to push more tests. (#84) 2026-03-07 22:31:04 -08:00
public Fixes missing icon. 2026-03-11 14:20:53 -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 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: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07:00
.gitignore feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07:00
.mcp.json feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -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 Fix instrument file not being added to docker image 2026-03-11 09:18:08 -07:00
drizzle.config.ts Initial commit from create-react-router 2025-10-10 23:04:50 -07:00
instrument.server.mjs feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07:00
package-lock.json feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07:00
package.json fix: replace react-router-serve with node dist/server.js in start script (#133) 2026-03-11 09:06:11 -07: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: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -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 feat: add Sentry error monitoring (#132) 2026-03-10 23:35:33 -07: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.