27143319e34def8b2d2f5bfff4a976f0ac79a0a1
Datwyler Shooting Event System
Production-ready full-stack web app based on your original live score concept.
Stack
- Frontend: Vue 3 + Vite (pnpm)
- Backend: Go + Echo
- Database: SQLite
- Packaging: Single Docker image (frontend + backend)
Main Features
- Bilingual UI: Arabic and English
- Runtime RTL/LTR switching
- Admin avatar crop/fit tool (drag + zoom before saving)
- AI score advisor for proof images (Gemini-powered suggestion + optional apply)
- Two clean modes:
- View Only screen for players/coaches/audience
- Admin Control Panel (login required)
- Admin credentials (default):
- Username:
datwyler - Password:
datwyler
- Username:
Tournament Flow Implemented
- Admin registers players and assigns groups (no hard 6-player limit).
- View screen shows group assignment clearly.
- Admin enters preliminary scores.
- Overall ranking auto-calculates and highlights top 12 finalists.
- If rank #12 cutoff is tied, qualification tie-break stage appears.
- Top 12 split into final groups (1-6 and 7-12 seeds).
- Admin enters final scores.
- Podium is determined automatically.
- If top-3 tie exists, podium tie-break stage appears.
API Highlights
Public:
GET /api/healthGET /api/state
Admin:
POST /api/admin/loginPOST /api/admin/logoutPOST /api/admin/playersPUT /api/admin/players/:idDELETE /api/admin/players/:idPUT /api/admin/scores/:stage/:idPOST /api/admin/scores/:stage/:id/advicePOST /api/admin/scores/:stage/reset
Stages:
preliminaryprelim_tiebreakfinalfinal_tiebreak
Local Development
Install dependencies:
make install
Run backend + frontend together:
make dev
Notes:
- Backend dev port is
18081. - Frontend runs on
5173(or next free port, e.g.5174if busy). - Frontend proxy is configured so
/api/*works from Vite dev server.
Run individually:
make dev-backend
make dev-frontend
Build
make build
This builds frontend assets, copies them into backend web/, and compiles backend binary.
Docker
Build image:
make docker-build ARCH=amd64
# or
make docker-build ARCH=arm64
Run image:
make docker-run ARCH=amd64
# or
make docker-run ARCH=arm64
Docker Compose (Production)
- Copy environment template:
cp .env.example .env
-
Edit
.envfor production credentials/tag. -
Start service:
docker compose up -d
- Check health:
docker compose ps
- View logs:
docker compose logs -f
Runtime Environment Variables
PORT(default8080)DB_PATH(default./data/shooting.db)WEB_DIR(default./web)ADMIN_USER(defaultdatwyler)ADMIN_PASS(defaultdatwyler)GEMINI_API_KEY(required for AI score advisor)GEMINI_MODEL(defaultgemini-2.0-flash)
Description
Languages
Vue
43%
HTML
19.8%
Go
17.9%
CSS
11.2%
JavaScript
7.3%
Other
0.8%