mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
201 lines
6.2 KiB
Markdown
201 lines
6.2 KiB
Markdown
# Fotbal Club – systém pro správu klubu
|
||
|
||
Moderní systém pro správu fotbalového klubu postavený na Go (Gin, GORM, PostgreSQL) a Reactu (Chakra UI, React Router, React Query).
|
||
|
||
## ✨ Funkce
|
||
|
||
- 🔐 Přihlášení pomocí JWT a role (admin/editor)
|
||
- 📝 Články (blog) s kategoriemi, publikací, nahráváním obrázků
|
||
- 🖼️ Bezpečné nahrávání souborů s kontrolou typu a velikosti
|
||
- ⚽ Správa týmů a hráčů
|
||
- 📅 Zápasy a tabulky s integrací FACR (cache, aliasy soutěží, override názvů/log)
|
||
- 💼 Sponzoři a bannery
|
||
- 📧 Kontaktní formulář s e‑mailovými notifikacemi
|
||
- 🚀 REST API (připraveno pro Swagger)
|
||
- 🐳 Docker pro snadný vývoj a nasazení
|
||
- 🔄 Automatické migrace DB a seed dat
|
||
- 🖥️ Moderní, responzivní frontend v češtině
|
||
- 🍪 Lišta cookies s kategoriemi (nezbytné, preference, analytické, marketingové)
|
||
|
||
## 🚀 Rychlý start
|
||
|
||
### Předpoklady
|
||
|
||
- [Docker](https://docs.docker.com/get-docker/)
|
||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||
|
||
### Spuštění přes Docker
|
||
|
||
1) Klonujte repozitář:
|
||
```bash
|
||
git clone <repository-url>
|
||
cd fotbal-club
|
||
```
|
||
|
||
2) Spusťte aplikaci:
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
Spustí se backend API, databáze PostgreSQL, proběhnou migrace a nastartuje frontend.
|
||
|
||
3) Přístup do aplikace:
|
||
- Frontend: http://localhost:3000
|
||
- Backend API: http://localhost:8080
|
||
- Swagger (pokud povolíte): http://localhost:8080/swagger/index.html
|
||
|
||
4) První spuštění:
|
||
- Otevřete http://localhost:3000 – budete přesměrováni na průvodce nastavením (vytvoření admin účtu, nastavení klubu a barev).
|
||
|
||
## 📂 Struktura projektu
|
||
|
||
```
|
||
fotbal-club/
|
||
├── frontend/ # React frontend
|
||
├── internal/ # Backend
|
||
│ ├── config/ # Konfigurace
|
||
│ ├── controllers/ # HTTP kontrolery
|
||
│ ├── middleware/ # Middleware (auth, admin)
|
||
│ └── models/ # DB modely
|
||
├── pkg/ # Znovupoužitelné balíčky (logger, utils)
|
||
├── database/ # Migrace
|
||
├── uploads/ # Nahrané soubory
|
||
├── cache/ # Cache (prefetch)
|
||
├── static/ # Statická aktiva
|
||
├── docker-compose.yml # Docker Compose
|
||
└── main.go # Vstupní bod aplikace
|
||
```
|
||
|
||
## 🔧 Konfigurace
|
||
|
||
Zkopírujte `.env.example` na `.env` a upravte:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Klíčové proměnné:
|
||
- `JWT_SECRET` – tajný klíč pro JWT (změňte pro produkci)
|
||
- `DATABASE_URL` – připojení na PostgreSQL
|
||
- `UPLOAD_DIR` – cílová složka pro uploady (výchozí `./uploads`)
|
||
- `MAX_UPLOAD_SIZE` – max. velikost souboru v bajtech
|
||
- `ALLOWED_ORIGINS` – povolené originy pro CORS (čárkou oddělené)
|
||
- `CONTACT_EMAIL`, `ADMIN_EMAIL`, `SMTP_*` – e‑mailová konfigurace
|
||
|
||
Frontend (`frontend/.env`):
|
||
- `REACT_APP_API_URL` – např. `http://localhost:8080/api/v1`
|
||
- `REACT_APP_API_BASE_URL` – alternativa (bez `/api`), např. `http://localhost:8080` (frontend automaticky připojí `/api/v1`)
|
||
- `REACT_APP_FACR_API_BASE_URL` – výchozí `http://localhost:8080/api/facr`
|
||
- `REACT_APP_FACR_CACHE_TTL` – TTL cache v ms (výchozí 3600000)
|
||
|
||
Poznámky k API URL na frontendu:
|
||
|
||
- Pokud zadáte pouze origin (např. `REACT_APP_API_BASE_URL=http://localhost:8080`), klient `frontend/src/services/api.ts` automaticky doplní suffix `/api/v1`.
|
||
- Při běhu přes Docker Compose se SPA vykresluje v prohlížeči hostitele. Proto musí být URL k backendu prohlížečem dosažitelná (použijte `http://localhost:8080`, nikoli název kontejneru jako `http://backend:8080`).
|
||
|
||
## 🛠 Lokální vývoj (bez Dockeru)
|
||
|
||
1) Závislosti backendu:
|
||
```bash
|
||
go mod download
|
||
```
|
||
|
||
2) Migrace a seed:
|
||
```bash
|
||
make migrate
|
||
make seed
|
||
```
|
||
|
||
3) Backend:
|
||
```bash
|
||
make run
|
||
```
|
||
|
||
4) Frontend:
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm start
|
||
```
|
||
|
||
## 🔒 Bezpečnost a zásady
|
||
|
||
- Backend přidává hlavičky (CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy).
|
||
- JWT token je očekáván v `Authorization: Bearer <token>`.
|
||
- Middleware `JWTAuth` ověřuje token, načte uživatele a ukládá do kontextu `user`, `userID`, `userRole` a `claims`.
|
||
- Upload endpoint validuje MIME typy a velikost souboru; obrázky JPEG/PNG se komprimují.
|
||
- Lišta cookies umožňuje volbu kategorií; rozhodnutí je uloženo v `localStorage` pod klíčem `cookie_consent` a vyvolá událost `cookie-consent-change`.
|
||
|
||
## 🧭 Frontend – hlavní části
|
||
|
||
- Veřejné stránky: `Home`, `Blog`, `Článek`, `O klubu`, `Kalendář`, `Tabulky`, `Sponzoři`, `Kontakt`, právní stránky.
|
||
- Admin: přístup přes `/admin` (chráněno), layout s postranním menu, hlavičkou a pomocníkem.
|
||
- Na stránce `Admin Dashboard` je vložena komponenta `AdminHelp` s rychlými tipy.
|
||
|
||
## 🧪 Testování
|
||
|
||
```bash
|
||
make test
|
||
```
|
||
|
||
Krytí:
|
||
```bash
|
||
go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out
|
||
```
|
||
|
||
## 🚀 Nasazení
|
||
|
||
### Build Docker image
|
||
```bash
|
||
docker build -t fotbal-club .
|
||
```
|
||
|
||
### Spuštění kontejneru
|
||
```bash
|
||
docker run -d \
|
||
--name fotbal-club \
|
||
-p 8080:8080 \
|
||
--env-file .env \
|
||
fotbal-club
|
||
```
|
||
|
||
Nahrané soubory jsou servírovány z `/uploads` (viz `main.go`).
|
||
|
||
## 📚 API
|
||
|
||
Základní přehled viz `DOCS/api.md`. Po zapnutí Swaggeru:
|
||
- Swagger UI: http://localhost:8080/swagger/index.html
|
||
- OpenAPI JSON: http://localhost:8080/swagger/doc.json
|
||
|
||
## 📖 Dokumentace
|
||
|
||
Veškerá dokumentace projektu byla přesunuta do složky **`DOCS/`** pro lepší organizaci.
|
||
|
||
**Hlavní dokumenty:**
|
||
- **[DOCS/DOKUMENTACE.md](./DOCS/DOKUMENTACE.md)** - Kompletní česká dokumentace (100KB+)
|
||
- **[DOCS/README.md](./DOCS/README.md)** - Index všech dokumentů s kategoriemi
|
||
- **[DOCS/QUICK_START_10_10.md](./DOCS/QUICK_START_10_10.md)** - Rychlý start
|
||
|
||
**Kategorie dokumentace:**
|
||
- 🎨 MyUIbrix Visual Editor (Elementor)
|
||
- ⚽ Sparta Elements (nové!)
|
||
- 🗺️ Mapy a lokace
|
||
- 🧭 Navigační systém
|
||
- 📊 Analytika & tracking
|
||
- 📰 Správa obsahu
|
||
- 🎟️ Aktivity & události
|
||
- ⚽ Zápasy & týmy
|
||
- 📧 Newsletter
|
||
- 📞 Kontakty
|
||
- 🎨 Sponzoři & bannery
|
||
- 📊 Ankety
|
||
- 🔧 Admin & systém
|
||
- 🚀 Performance & zabezpečení
|
||
|
||
Více informací v **[DOCS/README.md](./DOCS/README.md)**
|
||
|
||
## 📄 Licence
|
||
|
||
MIT – viz soubor [LICENSE](LICENSE).
|
||
|