Le tableau de bord d’une association de parents d’élèves.
Événements, bénévoles, adhérents, comptabilité et documents réunis dans une
seule application.
Application de gestion pour une APEL (association de parents d’élèves de l’enseignement libre) ou toute association scolaire équivalente. Elle centralise le travail de l’équipe, de la préparation d’un événement jusqu’au suivi administratif et financier.
Le dépôt ne contient aucune donnée d’association : identité, coordonnées, numéro RNA, événements, adhérents et écritures comptables vivent uniquement dans la base de l’instance déployée et se saisissent depuis l’application.
- Événements et calendrier — fiches détaillées, export iCalendar, modèles réutilisables et inscriptions publiques des bénévoles.
- Check-lists opérationnelles — échéances relatives en jours, semaines ou mois, responsables, descriptions mises en forme et réorganisation par glisser-déposer.
- Membres et adhérents — rôles administrateur, organisateur et membre, coordonnées, année scolaire, statut et suivi des cotisations.
- Comptabilité associative — recettes, dépenses, comptes, catégories, validation des écritures et justificatifs privés. Chaque écriture peut être rattachée à un événement, qui affiche alors son bilan.
- Documents officiels — procès-verbaux d’AG, attestations et archives avec pièces jointes protégées. Les événements ont leurs propres pièces jointes : devis, affiches, attestations, plans de salle.
- Communication — e-mails via Resend ou SMTP, notifications Telegram et rappels automatiques des tâches.
- Intégration Claude.ai — serveur MCP distant sécurisé par OAuth 2.1 et PKCE pour piloter les modules selon les droits du compte.
Docker Engine et Docker Compose sont les seuls prérequis :
git clone https://github.com/flocom/APEL-manager.git
cd APEL-manager
docker compose up --build -d| Service | Adresse locale |
|---|---|
| Application | http://localhost:3000 |
| Boîte e-mail Mailpit | http://localhost:8025 |
| État de santé | http://localhost:3000/api/health |
Au premier lancement, les secrets internes sont générés, PostgreSQL est
initialisé et les migrations sont appliquées automatiquement. Le premier
compte créé depuis /register devient administrateur. Il peut ensuite ouvrir
Configuration pour renseigner l’identité officielle (nom de l’association,
établissement, e-mail de contact, numéro RNA), les fenêtres de rappel, Telegram
et le fournisseur e-mail.
Les données restent conservées après un docker compose down. Pour arrêter la
stack :
docker compose downLe logo se règle dans Tableau de bord → Configuration → Logo : importez une image PNG, JPEG ou WebP, elle remplace aussitôt le logo neutre sur le site public, dans l’espace de travail et dans l’onglet du navigateur. Le fichier est conservé dans le volume des pièces jointes, jamais dans le dépôt.
| Conteneur | Rôle |
|---|---|
app |
Application Next.js 15 et migrations Drizzle |
db |
PostgreSQL 16 avec stockage persistant |
scheduler |
Rappels quotidiens et nettoyage des imports abandonnés |
mailpit |
Serveur SMTP local et boîte de contrôle |
caddy |
Reverse proxy HTTP/HTTPS et certificats TLS automatiques |
Des volumes dédiés conservent la base, les pièces jointes, les secrets générés,
les e-mails locaux et les certificats. La procédure de configuration, de
sauvegarde et de mise en production est détaillée dans
docs/DOCKER.md.
Copiez le modèle unique, renseignez les paramètres d’infrastructure, puis
démarrez l’instance. Docker Compose charge automatiquement .env :
cp .env.example .env
docker compose up --build -dCaddy peut obtenir automatiquement un certificat TLS dès qu’un domaine public
pointe vers le serveur. Le choix de Resend ou d’un relais SMTP, ses
identifiants et l’expéditeur se règlent exclusivement dans Tableau de bord →
Configuration. Mailpit reste inclus pour les essais locaux ; sélectionnez
SMTP avec l’hôte mailpit et le port 1025.
Le .env ne contient que ce dont l’application a besoin avant de pouvoir lire
la base : URL publique, accès PostgreSQL, secrets de sessions/chiffrement,
stockage, orchestration et ports. L’identité, les rappels, Telegram et la
messagerie se règlent dans l’application. Les mêmes noms d’environnement sont
utilisés en exécution directe, dans Docker et chez un hébergeur.
Claude.ai doit joindre une URL HTTPS publique. Le connecteur personnalisé utilise alors l’adresse :
https://votre-domaine.fr/api/mcp
Consultez docs/MCP_CLAUDE.md pour l’authentification et
la connexion du serveur MCP.
npm ci
cp .env.example .env
npm run db:migrate
npm run devRenseignez au minimum DATABASE_URL, AUTH_SECRET et
SETTINGS_ENCRYPTION_KEY dans .env. L’application accepte toute base
PostgreSQL compatible ; le guide Vercel utilise Neon.
Ne versionnez jamais de données réelles : dumps de base, exports d’adhérents, plannings internes, pièces comptables ou fichiers
.envrenseignés.