Application web de gestion pour la LIMA (Ligue d'Improvisation du Maine-et-Loire). Planification de spectacles, gestion des membres, agenda de la saison, et grilles d'alignement.
- Login email / mot de passe (JWT)
- Rôles : Admin (CA + Bureau) / Membre
- Activation de compte par token
- Import CSV depuis HelloAsso (adhérents + joueurs)
- 4 statuts : Match (M), Cabaret (C), Loisir (L), Adhérent (A)
- Commissions : Comspec, Comprog, Comform, Comadh, Comcom
- Recherche et filtrage
- Calendrier mensuel avec code couleur par type d'événement
- Types : Entraînement spectacle, Entraînement loisir, Match, Cabaret, Welsh, Formation, AG
- Détail événement avec casting (joueurs, MJ/MC, DJ, arbitre)
- Formulaire de configuration (lieu, type, joueurs, durée, contraintes)
- Génération de plan de soirée en Markdown
- Historique des plans sauvegardés
- Affectation des joueurs aux événements par trimestre
- Rôles : JR (Joueur), DJ, MJ/MC, AR (Arbitre), COACH
- Séparation Cabaret / Match
- Publication pour les adhérents
- Configuration de l'association (admin only)
- Gestion des saisons, lieux, commissions
- React 18 + TypeScript + Vite
- Tailwind CSS + shadcn/ui
- React Query (TanStack) pour les appels API
- React Router v6
date-fns+react-markdown+remark-gfm
- FastAPI (Python 3.12+)
- SQLAlchemy 2.0 (async, asyncpg)
- PostgreSQL 16
- Alembic pour les migrations
- JWT (python-jose) + bcrypt pour l'auth
- Import CSV HelloAsso + Import Excel calendrier
- Node.js 18+
- Python 3.12+
- PostgreSQL 16+
cd backend
# Copier et configurer les variables d'environnement
cp .env.example .env
# Éditer .env avec vos valeurs (DATABASE_URL, JWT_SECRET, etc.)
# Installer les dépendances
pip install -r requirements.txt
# Lancer les migrations
alembic upgrade head
# (Optionnel) Seeder avec des données de démo
python seed.py
# Lancer le serveur
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload# Installer les dépendances
npm install
# Configurer l'URL du backend (optionnel si même serveur)
export VITE_API_URL=http://localhost:8000
# Lancer en développement
npm run dev
# Build pour la production
npm run buildcd backend
# Configurer les variables
cp .env.example .env
# Éditer .env
# Lancer
docker compose up -dlima-app/
├── src/ # Frontend React
│ ├── components/ # Composants UI
│ │ ├── cabaret/ # Organisateur de spectacle
│ │ ├── layout/ # Sidebar, Dashboard
│ │ └── ui/ # shadcn/ui components
│ ├── contexts/ # AuthContext
│ ├── hooks/ # Custom hooks
│ ├── lib/ # API client, utilitaires
│ ├── pages/ # Pages (Login, Agenda, Members, Settings)
│ └── types/ # Types TypeScript
├── backend/ # Backend FastAPI
│ ├── app/
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── routers/ # API endpoints
│ │ ├── services/ # Business logic (import, auth)
│ │ └── utils/ # Security, dependencies
│ ├── alembic/ # Migrations DB
│ ├── static/ # Frontend buildé (production)
│ ├── requirements.txt
│ ├── Dockerfile
│ └── docker-compose.yml
├── package.json
└── vite.config.ts
| Domaine | Endpoints |
|---|---|
| Auth | POST /auth/login, GET /auth/me, PUT /auth/me, POST /auth/activate, POST /auth/forgot-password, POST /auth/reset-password, PUT /auth/me/password |
| Members | GET /members, POST /members, GET /members/{id}, PUT /members/{id}, DELETE /members/{id}, POST /members/import, POST /members/{id}/resend-activation, PUT /members/{id}/role |
| Events | GET /events, POST /events, GET /events/{id}, GET /events/{id}/cast, PUT /events/{id}, DELETE /events/{id}, POST /events/import-calendar |
| Alignments | GET /alignments, POST /alignments, GET /alignments/{id}, PUT /alignments/{id}, DELETE /alignments/{id}, POST /alignments/{id}/assign, PUT /alignments/{id}/publish |
| Autres | GET /seasons, GET /venues, GET /commissions, GET /show-plans, GET /settings, GET /health |
Documentation Swagger : /docs | ReDoc : /redoc
L'application importe directement les exports CSV de HelloAsso :
- CSV Adhérents — bulletin d'adhésion (données personnelles, commission)
- CSV Joueurs — cotisation joueur (groupe de jeu : Match/Cabaret, tarif)
Les membres sont rapprochés par email. Le statut (M/C/L/A) est déduit du groupe de jeu ou du tarif de cotisation.
- Thème sombre avec accents violet (#7C3AED) et or (#F59E0B)
- Responsive — mobile-first
- Sidebar rétractable avec navigation et liens sociaux
- Calendrier avec code couleur par type d'événement
Ce projet est développé pour la LIMA (Ligue d'Improvisation du Maine-et-Loire).
- Jérôme Jacq — Développeur principal, membre LIMA
- Développé avec l'assistance de Jayvis (IA coach & dev)