Plateforme SaaS moderne pour la gestion d’un tournoi annuel de tennis de table (Trophée François Grieder).
- Site public : accueil, trophée, agenda & salles, classement, inscription
- Espace admin : saisons, tours, tableaux, templates, joueurs, inscriptions, clubs, médias
- Espace joueur : dashboard, inscriptions, profil
- Auth Google via NextAuth
- Base PostgreSQL via Prisma
- Next.js (App Router)
- TypeScript
- Tailwind CSS + shadcn/ui
- Prisma + PostgreSQL
- NextAuth (Google)
Documentation admin détaillée dans /docs :
docs/overview.mddocs/admin.mddocs/data-model.mddocs/media.mddocs/operations.md
npm install
npm run devOuvre http://localhost:3000.
Copiez .env.example vers .env.
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
GOOGLE_DRIVE_FOLDER_ID="..."
GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ... }'Ces variables couvrent :
- les pages publiques basées sur Prisma (
accueil,agenda,tours,footer) - les classements PDF via Google Drive
NEXTAUTH_URL="https://votre-domaine.tld"
NEXTAUTH_SECRET="change-me"
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
EMAIL_SERVER="smtp://..."
EMAIL_FROM="Trophée FG <noreply@example.com>"
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY="..."
CLOUDINARY_CLOUD_NAME="your-cloud-name"
CLOUDINARY_API_KEY="..."
CLOUDINARY_API_SECRET="..."
CLOUDINARY_MEDIA_FOLDER="tfg-media"
FFTT_APP_ID="..."
FFTT_APP_PASSWORD="..."npx prisma migrate dev
npx prisma generatenpm run dev
npm run build
npm run startapp/: routes (public, admin, me)components/: UI & layoutlib/: helpers (auth, prisma, requireAdmin, etc.)prisma/: schema & migrationsdocs/: documentation admin
- La saison active pilote l’affichage de l’agenda.
- Les tableaux sont basés sur des templates globaux.
- Les inscriptions sont liées à un tour + tableau + joueur.
Projet interne, prêt pour production.