feat: Initial project structure for WebTriviasMulti

- Backend: FastAPI + Python-SocketIO + SQLAlchemy
  - Models for categories, questions, game sessions, events
  - AI services for answer validation and question generation (Claude)
  - Room management with Redis
  - Game logic with stealing mechanics
  - Admin API for question management

- Frontend: React + Vite + TypeScript + Tailwind
  - 5 visual themes (DRRR, Retro, Minimal, RGB, Anime 90s)
  - Real-time game with Socket.IO
  - Achievement system
  - Replay functionality
  - Sound effects per theme

- Docker Compose for deployment
- Design documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-26 07:50:48 +00:00
commit 43021b9c3c
57 changed files with 5446 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
from pydantic import BaseModel
from typing import Optional, List
from datetime import date, datetime
class QuestionBase(BaseModel):
question_text: str
correct_answer: str
alt_answers: List[str] = []
difficulty: int
fun_fact: Optional[str] = None
class QuestionCreate(QuestionBase):
category_id: int
class QuestionUpdate(BaseModel):
question_text: Optional[str] = None
correct_answer: Optional[str] = None
alt_answers: Optional[List[str]] = None
difficulty: Optional[int] = None
fun_fact: Optional[str] = None
status: Optional[str] = None
date_active: Optional[date] = None
class QuestionResponse(QuestionBase):
id: int
category_id: int
points: int
time_seconds: int
date_active: Optional[date]
status: str
created_at: datetime
class Config:
from_attributes = True
class QuestionForGame(BaseModel):
id: int
category_id: int
question_text: str
difficulty: int
points: int
time_seconds: int
class Config:
from_attributes = True
class AIGenerateRequest(BaseModel):
category_id: int
difficulty: int
count: int = 5
class AIValidateRequest(BaseModel):
question_id: int
player_answer: str