initial
This commit is contained in:
136
README.md
Normal file
136
README.md
Normal 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
|
||||
Reference in New Issue
Block a user