Skip to content

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

1 star

Watchers

0 watching

Forks

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, export Excel de la liste des adhérents pour l’APEL départementale.
  • Comptabilité associative — recettes, dépenses, comptes, catégories (créées à la volée, renommées, désactivées), validation des écritures et justificatifs privés. Chaque écriture peut être rattachée à un événement, qui affiche alors son bilan. Les relevés PDF du Crédit Mutuel s’importent en écritures : soldes vérifiés, opérations déjà importées écartées d’office, et chaque doublon possible soumis au trésorier avant l’enregistrement.
  • 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.
  • Supports de communication — une vidéo en motion design pour présenter l’APEL aux parents, préparée à partir des données de l’association, aux couleurs du logo, avec personnages, photos, musique générée et voix off naturelle open source, calculée sur le serveur (ou enregistrée au micro). Exportée en 1080p directement dans le navigateur.
  • 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 (profil 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. Ensuite, chaque demande se confirme depuis le lien reçu par e-mail, puis reste en attente — elle ne voit rien — jusqu’à ce qu’un administrateur la valide dans Utilisateurs. L’administrateur 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.

Il figure aussi en tête des e-mails, converti en PNG pour que tous les clients de messagerie l’affichent (Outlook ignore le WebP). Il faut pour cela que APP_URL soit renseignée : l’image est chargée depuis le site, et une adresse relative ne mène nulle part depuis une boîte de réception. Sans logo, les e-mails gardent leur en-tête habituel.

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 Facultatif : serveur SMTP d’essai et boîte de contrôle, sur la machine hôte seulement
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 disponible pour les essais locaux : démarrez-le avec docker compose --profile mailpit up -d, puis sélectionnez SMTP avec l’hôte mailpit et le port 1025. Il capture les messages sans les distribuer et affiche leur contenu, liens de réinitialisation de mot de passe compris : jamais en production. Hors relais local, l’envoi SMTP exige une connexion chiffrée.

Installation antérieure : Mailpit démarrait autrefois d’office, avec une interface ouverte à tout le réseau sur le port 8025. Ni git pull ni docker compose up -d n’arrêtent cet ancien conteneur, et l’application continue d’y relayer son courrier si elle était réglée ainsi. Vérifiez-le avec docker ps --filter name=mailpit --format '{{.Names}} {{.Ports}}' : la démarche pour le retirer ou le republier sur la seule machine hôte figure dans docs/DOCKER.md, partie Courrier, sous « Installation antérieure ».

Les images publiées sont signées : docs/DOCKER.md explique comment figer une version par son empreinte et vérifier sa signature plutôt que d’installer automatiquement chaque nouvelle image.

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

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages