# Game Marathon A web application for running gaming marathons with friends. Spin the wheel, complete challenges, earn points! ## Features - Create private marathons and invite friends - Add games with download links - AI-generated challenges using GPT - Spin the wheel for random game + challenge - Points system with streak bonuses - Leaderboard and activity feed - Proof upload for completed challenges ## Tech Stack - **Frontend**: React 18, TypeScript, Vite, Tailwind CSS, Zustand - **Backend**: FastAPI, SQLAlchemy, PostgreSQL - **AI**: OpenAI GPT-4o-mini - **Infrastructure**: Docker, Nginx ## Quick Start ### Prerequisites - Docker and Docker Compose - OpenAI API key ### Setup 1. Clone the repository: ```bash cd WebApp ``` 2. Create `.env` file: ```bash cp .env.example .env ``` 3. Edit `.env` and set your values: ```env DB_PASSWORD=your_secure_password SECRET_KEY=your_jwt_secret_at_least_32_characters OPENAI_API_KEY=sk-your-openai-key ``` 4. Start with Docker: ```bash docker-compose up -d ``` 5. Open http://localhost in your browser ### Development Mode **Backend:** ```bash cd backend python -m venv venv source venv/bin/activate # or venv\Scripts\activate on Windows pip install -r requirements.txt uvicorn app.main:app --reload ``` **Frontend:** ```bash cd frontend npm install npm run dev ``` ## Project Structure ``` WebApp/ ├── backend/ # FastAPI application │ ├── app/ │ │ ├── api/ # API endpoints │ │ ├── models/ # SQLAlchemy models │ │ ├── schemas/ # Pydantic schemas │ │ ├── services/ # Business logic │ │ └── core/ # Config, security │ └── uploads/ # Uploaded files ├── frontend/ # React application │ └── src/ │ ├── api/ # API client │ ├── components/# UI components │ ├── pages/ # Page components │ ├── store/ # Zustand store │ └── types/ # TypeScript types ├── bot/ # Telegram bot (coming soon) ├── docker-compose.yml └── nginx.conf ``` ## API Documentation When backend is running, visit: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## How to Play 1. **Create Marathon** - Set title, description, and duration 2. **Invite Friends** - Share the invite code 3. **Add Games** - Everyone adds their favorite games 4. **Generate Challenges** - AI creates challenges for each game 5. **Start Marathon** - Begin the competition 6. **Spin & Play** - Spin the wheel, get a challenge, complete it 7. **Upload Proof** - Submit screenshot/video as evidence 8. **Earn Points** - Build streaks for bonus points! ## Point System | Difficulty | Base Points | |------------|-------------| | Easy | 30-50 | | Medium | 60-100 | | Hard | 120-200 | **Streak Bonus:** - 2 in a row: +10% - 3 in a row: +20% - 4 in a row: +30% - 5+ in a row: +40% **Drop Penalties:** - 1st drop: Free (streak resets) - 2nd drop: -10 points - 3rd drop: -25 points - 4th+ drop: -50 points ## License MIT