Skip to content

aphrody-code/rpbey

Repository files navigation

RPBEY

Monorepo de la communauté Beyblade République Populaire du Beyblade — tournois, classements, gacha TCG, économie et duels.

Surface URL Hébergement
Dashboard rpbey.fr VPS — nginx → rpbey-web.service (:3002)
CDN cdn.rpbey.fr VPS — nginx + rg-cdn.service (:8804)
API edge api.rpbey.fr VPS nginx → Cloud Run (bot + gacha)
Gacha Activity play.rpbey.fr VPS — nginx, SPA statique Vite
Bot Discord Cloud Run europe-west3
Base de données Neon Postgres eu-central-1

Stack

App Package Techno
Web apps/web (@rose-griffon/dashboard) Next.js 16, App Router, standalone, better-auth, Drizzle
Bot apps/bot (@rose-griffon/bot) discord.js v14, discordx, Skia
Gacha apps/gacha-server Colyseus 0.17, BunWebSockets
Gacha client apps/gacha-client Vite, PixiJS, Discord Activity SDK
CDN apps/cdn Bun, uploads + assets statiques
DB packages/db (@rpbey/db) Drizzle ORM, schéma partagé

Runtime : Bun canary (lockfile v2). Orchestration : Turborepo.

Prérequis

  • Bun canary (bun upgrade --canary)
  • Accès GitHub Packages (@aphrody-code/*, @rpbey/*) — token dans ~/.npmrc
  • Variables d'env : copier .env.example.env à la racine et dans apps/web/

Développement local

bun install
bun run dev:web          # dashboard :3002
bun run dev:bot          # bot Discord

Réinitialisation complète (caches, deps, build bot + web) :

bun scripts/reactivate-local.ts

Contrôles qualité :

bun run lint
bun run type-check
bun run test:ci

Déploiement production

Tout se fait depuis le VPS (51.77.147.152, repo dans ~/rpbey).

Site principal (rpbey.fr)

cd ~/rpbey
git pull
bun scripts/deploy-infra.ts --web

Enchaîne : bun run build (Next standalone) → scripts/deploy-web.sh → systemd rpbey-web.service → nginx.

Infra nginx (cdn, api, play)

bun scripts/deploy-infra.ts              # tous les vhosts
bun scripts/deploy-infra.ts --only=cdn  # un seul domaine
bun scripts/deploy-infra.ts --play      # + rebuild gacha-client

Configs versionnées dans infra/nginx/, unités systemd dans infra/systemd/.

Bot (Cloud Run)

Push sur main touchant apps/bot/** → workflow .github/workflows/deploy-bot.yml.

Déploiement manuel : voir commentaires dans le workflow.

Migrations DB (Neon)

Automatiques sur push main quand le schéma Drizzle change — workflow .github/workflows/deploy-web.yml (job migrate-prod).

Manuel :

cd packages/db && DIRECT_DATABASE_URL=... bunx drizzle-kit migrate

DNS

Tous les sous-domaines *.rpbey.fr doivent pointer vers le VPS :

Record Type Cible
@ (apex) A 51.77.147.152
www A 51.77.147.152
cdn, api, play A 51.77.147.152

Script OVH (si la zone est gérée par l'API) :

bun scripts/ovh-dns-prod.ts            # dry-run
bun scripts/ovh-dns-prod.ts --apply    # applique

Sans certificat TLS valide, nginx sert un bootstrap HTTP pour rpbey.fr jusqu'à ce que Let's Encrypt réussisse.

CI / GitHub Actions

Workflow Déclencheur Rôle
ci.yml push / PR lint, type-check, tests
deploy-web.yml push main (web) migrations Neon prod
deploy-bot.yml push main (bot) Cloud Run prod
cron-profile-sync.yml cron sync profils Discord
cron-staff-sync.yml cron sync staff → Neon

Le déploiement du site sur le VPS reste manuel sur le serveur (deploy-infra.ts --web) — pas de runner self-hosted configuré.

Documentation

Index complet : docs/README.md.

Références utiles :

Structure du monorepo

apps/
  web/            # Dashboard Next.js (rpbey.fr)
  bot/            # Bot Discord
  gacha-server/   # Serveur Colyseus
  gacha-client/   # Client Discord Activity
  cdn/            # Assets & uploads
packages/
  db/             # Schéma Drizzle + migrations
  api-contract/   # Contrat Zod / OpenAPI
  api-client/     # SDK généré
  challonge/      # Scraper & intégration Challonge
infra/
  nginx/          # Vhosts prod versionnés
  systemd/        # Unités services VPS
scripts/
  deploy-infra.ts # Déploiement nginx + certs + web
  deploy-web.sh   # Post-build standalone Next.js

About

Monorepo RPBEY — dashboard Beyblade, bot Discord, gacha TCG (Next.js, Cloud Run, Neon)

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors