mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
f3db65d35075e8861a43e7510f5f0979c8a04c11
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
Spuštění přes Docker
- Klonujte repozitář:
git clone <repository-url>
cd fotbal-club
- Spusťte aplikaci:
docker-compose up -d
Spustí se backend API, databáze PostgreSQL, proběhnou migrace a nastartuje frontend.
- Přístup do aplikace:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Swagger (pokud povolíte): http://localhost:8080/swagger/index.html
- 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:
cp .env.example .env
Klíčové proměnné:
JWT_SECRET– tajný klíč pro JWT (změňte pro produkci)DATABASE_URL– připojení na PostgreSQLUPLOAD_DIR– cílová složka pro uploady (výchozí./uploads)MAX_UPLOAD_SIZE– max. velikost souboru v bajtechALLOWED_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/v1REACT_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/facrREACT_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), klientfrontend/src/services/api.tsautomaticky 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 jakohttp://backend:8080).
🛠 Lokální vývoj (bez Dockeru)
- Závislosti backendu:
go mod download
- Migrace a seed:
make migrate
make seed
- Backend:
make run
- Frontend:
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
JWTAuthověřuje token, načte uživatele a ukládá do kontextuuser,userID,userRoleaclaims. - 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
localStoragepod klíčemcookie_consenta vyvolá událostcookie-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 Dashboardje vložena komponentaAdminHelps rychlými tipy.
🧪 Testování
make test
Krytí:
go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out
🚀 Nasazení
Build Docker image
docker build -t fotbal-club .
Spuštění kontejneru
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 - Kompletní česká dokumentace (100KB+)
- DOCS/README.md - Index všech dokumentů s kategoriemi
- 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
📄 Licence
MIT – viz soubor LICENSE.
Description
Languages
TypeScript
49.5%
CSS
23.3%
Go
18.9%
HTML
3.8%
JavaScript
2.2%
Other
2.1%