Skip to content

Repository files navigation

Multi Mate

Multi Mate is a football matchup analytics app built with React, Vite, Express, and TypeScript. It combines league standings, fixture analysis, and confidence scoring across several European leagues in a single full-stack app.

The current runtime uses the in-memory MemStorage implementation in server/storage.ts, so you can run the app locally without provisioning a database. Drizzle and PostgreSQL config are included in the repo for future persistence work, but they are not the active runtime path today.

Stack

  • React 18 + Vite frontend
  • Express + TypeScript backend
  • TanStack Query for client-side data fetching
  • Tailwind CSS + Radix UI components
  • Optional API-Football integration for live refreshes

Scripts

  • npm run dev starts the app in development mode
  • npm run check runs TypeScript checks
  • npm run build creates the production build in dist/
  • npm start runs the production server from dist/index.js
  • npm run db:push pushes the Drizzle schema if you later wire up Postgres

Requirements

  • Node.js 20+ recommended
  • npm 10+ recommended

Environment Variables

Copy .env.example to a local .env file if needed.

  • PORT: optional, defaults to 5000
  • FOOTBALL_API_KEY: optional for basic local startup, required for live API-Football standings and fixture updates
  • THE_ODDS_API_KEY: preferred odds provider for SportsBet AU h2h prices and combined multi odds
  • SPORTSGAMEODDS_API_KEY: optional fallback odds provider for Bet365 prices from SportsGameOdds
  • ENABLE_MOCK_SPORTS_DATA: optional local demo switch; set to true only when you explicitly want generated fallback fixtures
  • DATABASE_URL: not required for the current in-memory runtime, only needed if you activate the Drizzle/Postgres workflow

Local Setup

npm install
npm run dev

The app serves both the API and the frontend from the same Node process.

Production Build

npm install
npm run check
npm run build
npm start

After a successful build, the production outputs are:

  • dist/index.js
  • dist/public/

Runtime Notes

  • If FOOTBALL_API_KEY is missing, the app still starts, but live league fixtures and standings are disabled unless ENABLE_MOCK_SPORTS_DATA=true.
  • If THE_ODDS_API_KEY and SPORTSGAMEODDS_API_KEY are both missing, the app still starts and matchup cards show odds as pending.
  • The /api/leagues/:id/refresh route expects FOOTBALL_API_KEY to be configured.
  • drizzle.config.ts requires DATABASE_URL only for Drizzle commands such as npm run db:push.

Deployment Notes

This repo is intentionally host-agnostic for the first upload. Any Node-compatible host that supports a long-running Express server can run it with:

  1. npm install
  2. npm run build
  3. npm start

Vercel

This repo is now set up for Vercel with:

To connect it in Vercel:

  1. Import the GitHub repo in Vercel.
  2. Keep the detected build settings from vercel.json.
  3. Add FOOTBALL_API_KEY only if you want live API-backed football data.
  4. Add THE_ODDS_API_KEY if you want SportsBet odds in matchup and multi views.
  5. Optionally add SPORTSGAMEODDS_API_KEY as the older Bet365 fallback.
  6. Deploy.

For local Vercel CLI linking later, run vercel link and vercel env add as needed, but no committed .vercel/ directory is required.

Screenshot

The repo includes a sample screenshot at all-bets-this-week.png.

Follow-Up Cleanup Ideas

  • Audit and update vulnerable dependencies
  • Decide whether to keep the in-memory runtime or complete the Postgres integration
  • Add hosting-specific config for your chosen platform when you are ready to deploy

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages