No description
- Go 47.8%
- Vue 35.5%
- TypeScript 13.6%
- CSS 2.3%
- Dockerfile 0.5%
- Other 0.3%
|
|
||
|---|---|---|
| .serena | ||
| backend | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| LICENSE | ||
| README.md | ||
shamus
Jeu du Loup-Garou en ligne, multijoueur et temps réel.
Stack
- Backend : Go + Gin + coder/websocket
- Persistance : PostgreSQL via sqlc + migrations goose
- Auth : OIDC (IAM externe — Keycloak / Authentik / Zitadel au choix)
- Frontend : Vue 3 + Vite + TypeScript, kit UI pixel maison (CSS scoped + tokens), reka-ui pour les primitives accessibles
- Orchestration dev : Docker Compose
Structure du dépôt
shamus/
├── backend/ # Service Go (HTTP + WebSocket + logique de jeu)
├── frontend/ # SPA Vue 3
├── docker-compose.yml
└── .env.example
Voir backend/README.md et frontend/README.md pour les détails de chaque sous-projet.
Ajouter un rôle
Un rôle = un fichier de chaque côté :
backend/internal/domain/game/role_<id>.go:RoleSpec(faction, phase de nuit, actions, hooks) ;frontend/src/roles/<id>.ts:defineRole(icône, ton, vue d'action), à ajouter dansroles/index.ts;- les clés i18n
role.<id>.*dansfrontend/src/locales/.
Démarrage rapide
cp .env.example .env
docker compose up -d postgres
# Backend
cd backend && make dev
# Frontend (autre terminal)
cd frontend && pnpm install && pnpm dev
Ou tout en Docker :
docker compose up --build
Frontend : http://localhost:5173 — Backend : http://localhost:8080
Scope du MVP
- Rôles : villageois, loups-garous, voyante, sorcière, chasseur, cupidon, petite fille + fonction de Maire
- Salons privés avec code de partage
- Chat textuel en jeu (public village + privé loups la nuit)