ProductionGame/README.md

129 lines
5.5 KiB
Markdown

# EL PURO
> **"99.1% Pure. Zero Compromise."**
**El Puro** er et mobil-optimeret incremental/idle-spil stylet som en hemmelig, krypteret burner phone (*SilkNet OS v3.2*). Spillet er skabt til hurtige mikro-sessioner (30 sekunder til 3 minutter), hvor du opbygger et undergrundsimperium fra en lille cannabis-plante til et globalt syntetisk kartel.
Spillet kører som en selvstændig **Docker Compose stack** med en lynhurtig Python FastAPI backend, SQLite database og en Nginx reverse-proxy.
---
## 📱 Nøglefunktioner
* **Burner Phone Interface:** Mørkt OLED-design med monospaced taktiske datafonte (`JetBrains Mono`), statuslinje med Police Heat meter og 4 touch-venlige bund-tabs:
* ⚗️ **Lab:** Manuel høst/syntese, hyring af laboranter og opskriftsblanding.
* 💼 **Streets:** Dealer-netværk og **Designer Cocktails** (kombination af stoffer som f.eks. *Calvin Klein*, *Speedball* og *Candy Flip*).
* 🕸️ **Network (Talent-Træ):** Forgrenet spindelvæv med 3 distinkte stier: *Path of the Chemist*, *Path of the Kingpin* og *Path of the Smuggler*.
* 🏦 **Offshore:** Hvidvaskning af snavsede kontanter til **Clean Bonds** (Prestige-reset med permanente multiplikatorer).
* **10 Progressive Stof-Tiers:** Cannabis, Magic Mushrooms, Adderall, Meth (Blue Sky), MDMA, Ketamin, Kokain (Pure White), Crack, Heroin og Fentanyl.
* **Police Heat & Raids:** Hurtige quick-time hændelser, hvor du kan bestikke politiet, gemme dit lager eller løbe risikoen for 2x profit.
* **Simpelt Honeypot Brugersystem:** Kun brugernavn og password. Ingen e-mail, ingen 2FA. Inkluderer en usynlig honeypot-fælde (`website_hp`), der automatisk afviser bot-registreringer.
* **Cloud & Offline Sync:** Spillet gemmer lokalt og synkroniserer automatisk til serveren hvert 5. sekund.
---
## 🛠️ Arkitektur & Teknologistak
```
┌────────────────────────┐
│ Browser / Mobil UI │
│ (HTML5, CSS, JS) │
└───────────┬────────────┘
│ HTTP / :HOST_PORT
▼
┌────────────────────────┐
│ Nginx Proxy │
│ (Reverse Proxy) │
└─────┬────────────┬─────┘
│ │
/ (Statiske aktiver) │ /api/*
│ ▼
│ ┌───────────────┐
│ │ Python FastAPI│
│ │ (JWT & Auth) │
│ └───────┬───────┘
│ │
▼ ▼
[frontend/] [SQLite DB]
(/app/data/elpuro.db)
```
---
## 🚀 Hurtig Start med Docker Compose
### 1. Forudsætninger
* [Docker](https://docs.docker.com/get-docker/) & [Docker Compose](https://docs.docker.com/compose/)
### 2. Klon repository
```bash
git clone https://git.p20.dev/christian/el-puro.git
cd el-puro
```
### 3. Konfiguration (.env)
Kopier eksempelfilen og tilpas dine indstillinger:
```bash
cp .env.example .env
```
Indhold i `.env`:
```env
# Port på værtsmaskinen hvor spillet tilgås
HOST_PORT=8080
# Offentligt domænenavn (valgfrit til vhost-routing)
DOMAIN_NAME=localhost
# Hemmelig nøgle til JWT signering
SECRET_KEY=el_puro_secret_key_change_in_production_jwt_99_1_pure
```
### 4. Start stakken
```bash
docker compose up -d --build
```
Spillet er nu tilgængeligt i din browser på:
👉 **`http://localhost:8080`** (eller den port du valgte i `.env`).
---
## 📁 Projektstruktur
```
.
├── .env.example # Skabelon til miljøvariable
├── docker-compose.yml # Docker Compose opsætning
├── backend/ # FastAPI backend
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── main.py # API endpoints & logik
│ ├── auth.py # Bcrypt & JWT autentificering
│ ├── database.py # SQLite databaseinitialisering
│ └── models.py # Pydantic schemas (med honeypot trap)
├── frontend/ # Mobil-optimeret frontend
│ ├── index.html # SilkNet OS layout og modals
│ ├── css/
│ │ └── style.css # Dark OLED tema og responsivt layout
│ └── js/
│ ├── api.js # API klient & sky-synkronisering
│ ├── config.js # 10 stoffer, opskrifter, skills og achievements
│ └── game.js # Spilmotor, loop, heat og mechanics
└── nginx/
└── default.conf.template # Nginx reverse proxy konfiguration
```
---
## 🔒 Honeypot Sikkerhed
Registrerings-endpointet (`POST /api/auth/register`) inkluderer en skjult `website_hp` parameter.
* Menneskelige brugere ser ikke feltet og lader det stå tomt.
* Automatiserede bots udfylder formularen blindt, hvorefter serveren afviser anmodningen med `400 Bad Request`. Dette holder databasen fri for falske konti uden behov for Captcha.
---
## 📜 Licens
Privat projekt tilhørende Christian. Alle rettigheder forbeholdes.