This commit is contained in:
2025-12-14 02:38:35 +07:00
commit 5343a8f2c3
84 changed files with 7406 additions and 0 deletions

136
README.md Normal file
View File

@@ -0,0 +1,136 @@
# 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