Intranet Prépavogt Alumni

Documentation interne · Django 5.1 · DRF · React · PostgreSQL · Cloudinary · Resend

v0.7.0 PROD
Documentation interne — v0.7.0

Intranet Prépavogt Alumni

Plateforme de mise en réseau pour les anciens élèves de Prépavogt. RGPD-compliant · Activation par invitation · Annuaire opt-in · Actualités membres.

Plateforme Swagger UI ReDoc OpenAPI JSON API Reference Admin Django

Périmètre V1

📋 Livré
Base de contacts privée

Import CSV depuis Microsoft Forms. Table ContactBase strictement privée, admin uniquement. 187 contacts importés avec 13 champs pré-remplis. Commande import_contacts + UI admin.

✉️ Livré
Système d'invitation

Envoi d'emails d'activation via token sécurisé (7 jours). Actions admin : envoyer invitation, renvoyer invitation. Emails via Resend en production, console en dev.

🔐 Livré
Activation & authentification

Page Activate.tsx : création de mot de passe + consentement RGPD explicite. Login JWT. vercel.json SPA rewrite. VITE_API_URL corrigé via .env.production.

📖 Livré
Annuaire alumni

Connexion API réelle (GET /api/alumni/), pagination 12/page, filtres (promotion, filière, ville, secteur), détail avec "Même promotion". React Query hooks. Mock toggle pour démo.

📰 Livré
Actualités

Connexion API réelle, routage par slug, hero banner cover image. Admin CRUD (liste + formulaire rich text + upload image). 8 articles en base.

👤 Livré
Profil utilisateur

GET/PATCH /api/alumni/me/, édition inline (selects + inputs), visibilité toggle, retrait consentement RGPD, jauge complétion sidebar.

🛡️ Livré
Pages administration

Dashboard admin, base de contacts (KPIs + table + invitation + import CSV), CRUD articles, analytics (django-request). ProtectedAdminRoute (staff-only).

🔀 Livré
Mock toggle runtime

Bouton Mock/API dans la topbar. Bascule localStorage sans rebuild. Adapter hybride axios. Auth jamais mockée.

📧 Livré
Newsletter

Abonnement/désabonnement utilisateur. Toggle dans NewsDetail. BooleanField User + endpoints subscribe/unsubscribe.

🎨 Livré
Design & UX

Sidebar redesign (groupes, promo, complétion, social links). Palette verte PVA. Pages FAQ et Événements.

🖼 Livré
Stockage media (Cloudinary)

Django 5.1 STORAGES dict. USE_CLOUDINARY=True en staging/prod. Covers articles + uploads → Cloudinary.

💬 V2
Messagerie interne

Reporté en V2. V1 : contact via mailto: sur le profil. WhatsApp optionnel si numéro fourni.

Stack technique

Django 5.1 Backend
Django REST Framework API
SimpleJWT Auth
React 18 + TypeScript Frontend
PostgreSQL 16 Base de données
Resend Email
Cloudinary Media
CKEditor 5 Éditeur riche
WhiteNoise Statiques
drf-spectacular Documentation
Coolify + IONOS VPS S+ Hébergement
Vercel Frontend hosting
Docker Compose DevOps

Modèles de données

ContactBase apps/accounts
Privé — admin uniquement
User apps/accounts
Privé — authentification
ActivationToken apps/accounts
Privé — temporaire
AlumniProfile apps/alumni
Public — membres connectés
Article apps/news
Membres connectés
PasswordResetToken apps/accounts
Privé — temporaire

Dernière version

v0.7.0 Juin 2026 Actuelle
  • Pages FAQ (8 questions) + Événements (6 événements, images Unsplash, 3 colonnes)
  • Analytics : django-request activé + page stats (KPIs, AreaChart, BarChart, table requêtes)
  • Import CSV contacts depuis l'admin frontend (délimiteur auto-détecté ; vs ,)
  • Migration RCT → PROD (pg_dump/psql, 185 contacts, 11 users, 9 alumni)
  • Cloudinary fix — Django 5.1 STORAGES (DEFAULT_FILE_STORAGE ignoré)
  • Domaines prod : app.prepavogt-alumni.org + intranet.prepavogt-alumni.org
  • FRONTEND_URL → app.prepavogt-alumni.org (emails activation)
  • Sidebar : titre INTRANET stylisé (gradient), auto-collapse mobile
  • Lovable branding retiré (OG tags, title, author → PVA)
  • KPI contacts corrigés (page_size 500, max_page_size dynamique)
  • Admin exclu des contacts (is_staff) + annuaire
  • Docs internes mises à jour (templates pages/)