Skip to content

Repository files navigation

APEL Manager

APEL Manager

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.

Next.js 15 TypeScript PostgreSQL 16 Docker Compose

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.

Fonctionnalités

  • É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.

Démarrage en une commande

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 down

Personnaliser l’identité visuelle

Le 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.

Stack Docker complète

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.

Mise en production

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 -d

Caddy 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.

Développement local

npm ci
cp .env.example .env
npm run db:migrate
npm run dev

Renseignez 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 .env renseignés.

Documentation

About

Application de gestion pour une association de parents d'élèves : événements, bénévoles, adhérents, comptabilité, documents et serveur MCP pour Claude.ai

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages