Monorepo Node.js avec plusieurs services :
apps/web– Front-end Next.jsapps/api– API REST Fastify (Prisma/MySQL)apps/ws– Service WebSocket Socket.IOapps/voice– SFU voix basé sur Mediasoupapps/storage– Service de stockage
Cette application est destinée aux bénévoles enregistrés d'une ONG. Le processus d'inscription n'est pas ouvert au public. Un outil de configuration est fourni pour créer le premier compte administrateur.
- Node.js 20+
- MySQL 8+
- Redis (optionnel, sauf pour le scale-out WS)
npm installCréez un fichier .env à la racine du projet.
Configuration minimale :
# URL du Front-end
NEXT_PUBLIC_APP_URL=http://localhost:3000
# URL WebSocket
NEXT_PUBLIC_WS_URL=ws://localhost:5000
# Base de données (MySQL)
DATABASE_URL="mysql://utilisateur:motdepasse@localhost:3306/solar"
# Clé secrète pour l'authentification
BETTER_AUTH_SECRET=une_cle_secrete_tres_longue
# Configuration Email (Resend)
RESEND_API_KEY=re_your_key
# Options d'administration
HIDE_EMAILS_IN_ADMIN=true # Masque les emails dans l'onglet admin (u***@domain.com)Si l'app est servie derriere Traefik, assurez-vous que les services utilisent la meme origine publique pour l'emission et la validation des JWT :
# URL publique (doit correspondre au domaine https public)
NEXT_PUBLIC_APP_URL=https://solar.example.org
BETTER_AUTH_URL=https://solar.example.org
# URL interne pour que les services puissent joindre Better Auth
INTERNAL_AUTH_URL=http://web:3000
# Base API publique si Traefik route /v1 vers l'API
NEXT_PUBLIC_API_URL=https://solar.example.orgnpm run generate
# Si c'est une nouvelle installation :
# npx prisma db pushUtilisez l'outil de configuration pour créer le premier compte administrateur. Ce compte vous permettra ensuite d'inviter d'autres membres.
npm run setup:adminSuivez les instructions à l'écran pour saisir le nom, l'email et le mot de passe de l'administrateur.
En mode développement :
npm run dev:allL'application sera accessible sur http://localhost:3000.
Pour lancer toute la stack avec Docker :
npm run compose:upL'accès à la partie connectée de l'application se fait uniquement sur invitation. Une fois le premier administrateur créé via l'outil de configuration, celui-ci peut gérer les membres et les invitations depuis l'onglet "Utilisateurs".
npm run dev:all: Lance tous les services en mode dev.npm run setup:admin: Outil de création du premier administrateur.npm run db: Réinitialise la base de données (Attention : destructif).npm run build:all: Compile tous les services pour la production.