Best landing page yet, lost logged in links to lists of bets

This commit is contained in:
2026-01-06 00:23:17 -06:00
parent f50eb2ba3b
commit eac0d6e970
67 changed files with 3932 additions and 99 deletions

View File

@ -10,6 +10,7 @@ export interface User {
losses: number
win_rate: number
status: 'active' | 'suspended' | 'pending_verification'
is_admin: boolean
created_at: string
}

View File

@ -0,0 +1,53 @@
export enum SportType {
FOOTBALL = "football",
BASKETBALL = "basketball",
BASEBALL = "baseball",
HOCKEY = "hockey",
SOCCER = "soccer",
}
export enum EventStatus {
UPCOMING = "upcoming",
LIVE = "live",
COMPLETED = "completed",
CANCELLED = "cancelled",
}
export interface SportEvent {
id: number;
sport: SportType;
home_team: string;
away_team: string;
official_spread: number;
game_time: string;
venue: string | null;
league: string | null;
min_spread: number;
max_spread: number;
min_bet_amount: number;
max_bet_amount: number;
status: EventStatus;
final_score_home: number | null;
final_score_away: number | null;
created_by: number;
created_at: string;
updated_at: string;
}
export interface SpreadGridBet {
bet_id: number;
creator_id: number;
creator_username: string;
stake: number;
status: string;
team: string;
can_take: boolean;
}
export type SpreadGrid = {
[spread: string]: SpreadGridBet[];
};
export interface SportEventWithBets extends SportEvent {
spread_grid: SpreadGrid;
}

View File

@ -0,0 +1,45 @@
export enum TeamSide {
HOME = "home",
AWAY = "away",
}
export enum SpreadBetStatus {
OPEN = "open",
MATCHED = "matched",
COMPLETED = "completed",
CANCELLED = "cancelled",
DISPUTED = "disputed",
}
export interface SpreadBetCreate {
event_id: number;
spread: number;
team: TeamSide;
stake_amount: number;
}
export interface SpreadBet {
id: number;
event_id: number;
spread: number;
team: TeamSide;
creator_id: number;
taker_id: number | null;
stake_amount: number;
house_commission_percent: number;
status: SpreadBetStatus;
payout_amount: number | null;
winner_id: number | null;
created_at: string;
matched_at: string | null;
completed_at: string | null;
}
export interface SpreadBetDetail extends SpreadBet {
creator_username: string;
taker_username: string | null;
event_home_team: string;
event_away_team: string;
event_official_spread: number;
event_game_time: string;
}