https://github.com/phash/playtogether
Play nice little games together
https://github.com/phash/playtogether
Last synced: 4 months ago
JSON representation
Play nice little games together
- Host: GitHub
- URL: https://github.com/phash/playtogether
- Owner: phash
- Created: 2026-02-05T07:54:21.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2026-02-05T16:45:37.000Z (5 months ago)
- Last Synced: 2026-02-05T19:59:42.577Z (5 months ago)
- Language: TypeScript
- Size: 245 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PlayTogether
Eine Multiplayer-Plattform für kleine Spiele, die man gemeinsam über Smartphones spielen kann.
## Features
- **Echtzeit-Multiplayer** via WebSocket
- **Mobile-First Design** - optimiert für Smartphones
- **Native Android App** mit Jetpack Compose
- **Raum-System** mit einfachen 4-stelligen Codes
- **10 Spielmodi** in 3 Kategorien (Klassisch, Party, Wort-Spiele)
- **Moody-System** - Virtuelles Haustier mit Belohnungen
- **Achievement-System** - 18 Achievements zum Freischalten
- **Freundschafts-System** - Freunde hinzufuegen und verwalten
- **Playlist-System** - Mehrere Spiele hintereinander spielen
## Projektstruktur
```
playtogether/
├── packages/
│ ├── shared/ # Gemeinsame Typen und Utilities
│ ├── server/ # Backend (Express + Socket.io + Prisma)
│ └── client/ # Frontend (React + Vite)
├── android/ # Native Android App (Kotlin + Jetpack Compose)
└── docker-compose.yml
```
## Schnellstart
### Mit Docker (Empfohlen)
**Voraussetzungen:** Docker und Docker Compose
```bash
# .env Datei erstellen
cp .env.example .env
# Container bauen und starten
make up
# Oder mit npm:
npm run docker:up
```
Die Anwendung ist dann verfügbar:
- **Client:** http://localhost (Port 80)
- **Server:** http://localhost:3001
**Weitere Docker-Befehle:**
```bash
make logs # Logs anzeigen
make down # Container stoppen
make restart # Container neustarten
make dev # Entwicklungsmodus mit Hot-Reload
```
### Ohne Docker (Lokale Entwicklung)
**Voraussetzungen:** Node.js 18+
```bash
# Dependencies installieren
npm install
# Shared-Paket bauen
npm run build:shared
# Server und Client gleichzeitig starten
npm run dev
```
- Server: http://localhost:3001
- Client: http://localhost:5173
## Wie es funktioniert
1. **Spiel erstellen**: Ein Spieler erstellt einen Raum und wählt ein Spiel
2. **Code teilen**: Der 4-stellige Raum-Code wird mit Freunden geteilt
3. **Beitreten**: Freunde öffnen die App und geben den Code ein
4. **Spielen**: Der Host startet das Spiel, wenn genug Spieler da sind
## Technologie-Stack
- **Frontend**: React 18, TypeScript, Vite, Zustand
- **Backend**: Node.js, Express, Socket.io, Prisma
- **Android**: Kotlin, Jetpack Compose, Material 3
- **Database**: PostgreSQL, Redis
- **Shared**: TypeScript Typen und Utilities
- **Deployment**: Docker, Docker Compose, nginx
## Docker Deployment
### Produktion
```bash
# Einfaches Deployment
./scripts/deploy.sh
# Oder manuell:
docker compose build
docker compose up -d
```
### Konfiguration
Umgebungsvariablen in `.env`:
| Variable | Beschreibung | Standard |
|----------|--------------|----------|
| `SERVER_PORT` | Server-Port (extern) | 3001 |
| `CLIENT_PORT` | Client-Port (extern) | 80 |
| `VITE_SERVER_URL` | WebSocket URL | http://localhost:3001 |
| `CLIENT_URL` | CORS Origin | http://localhost |
### Container
| Service | Image | Port | Beschreibung |
|---------|-------|------|--------------|
| `server` | Node.js Alpine | 3001 | WebSocket + REST API |
| `client` | nginx Alpine | 80 | Static Files + SPA |
### Health Checks
```bash
# Server
curl http://localhost:3001/api/health
# Client
curl http://localhost/health
```
## Verfuegbare Spiele (10)
### Klassische Spiele
| Spiel | Spieler | Beschreibung |
|-------|---------|--------------|
| Quiz Champ | 2-8 | 145 Fragen, 20s Timer, Streak-Bonus |
| Tic Tac Toe | 2-8 | Klassisches Strategiespiel im Turniermodus |
| Schere Stein Papier | 2-16 | Turnier-Paarungen |
| Reaktions-Test | 2-8 | Reagiere so schnell wie moeglich auf das Signal |
### Party & Spass
| Spiel | Spieler | Beschreibung |
|-------|---------|--------------|
| Entweder/Oder | 3-20 | Was waehlt die Mehrheit? Stimme ab! |
| Gluecksrad | 2-6 | Drehe das Rad und loese die Phrase |
| Emoji Malen | 3-10 | Male mit Emojis und lass andere raten |
### Wort-Spiele
| Spiel | Spieler | Beschreibung |
|-------|---------|--------------|
| Anagramme | 2-8 | Entwirre das verwuerfelte Wort |
| Galgenmaennchen | 2-8 | Errate das Wort Buchstabe fuer Buchstabe |
| Wort-Raten | 4-12 | Erklaere Woerter und lass Freunde raten |
## Android App
Die native Android-App ist verfügbar als APK-Download:
```
http://localhost:3003/download/playtogether.apk
```
**Features:**
- Native Jetpack Compose UI
- Material Design 3
- WebSocket-Integration
- Offline-fähig (Lobby)
## Lizenz
MIT