Aller au contenu

Aide-mémoire — EPIDOCS Frontend

Référence rapide pour le frontend Next.js de EPIDOCS.

Accès rapides

Élément Lien
Frontend prod mydocs.epitools.bj
API prod api.mydocs.epitools.bj
Repo GitHub

Ports et conteneurs

Service Port hôte Port conteneur Container name
Frontend (Next.js) 127.0.0.1:7012 3000 epidocs_frontend_container

Réseau Docker dédié : epidocs-network

Chemins VPS

/root/projects/epidocs/epidocs-frontend/
/root/projects/epidocs/epidocs-frontend/docker-compose.prod.yml
/root/projects/epidocs/epidocs-frontend/.env
/root/projects/nginx/conf.d/epidocs.conf

Commandes essentielles

Vérification santé

# HTTP
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:7012
# 200 = OK

# État conteneur
docker inspect epidocs_frontend_container --format='{{.State.Health.Status}}'

Logs

docker logs epidocs_frontend_container --tail 50
docker logs epidocs_frontend_container -f
docker logs epidocs_frontend_container --tail 100 -t

Diagnostics

# Variables d'environnement injectées
docker exec epidocs_frontend_container env | grep NEXT_PUBLIC

# Réseau Docker
docker network inspect epidocs-frontend_epidocs-network

# Connectivité vers le backend
docker exec epidocs_frontend_container wget -q -O- http://127.0.0.1:7010/ 2>/dev/null

# Azure AD accessible
curl -s -o /dev/null -w "%{http_code}" \
  https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
# 200 = OK

# Nginx
docker exec nginx-proxy nginx -t
curl -s -o /dev/null -w "%{http_code}" https://mydocs.epitools.bj

Rollback

cd /root/projects/epidocs/epidocs-frontend

# Lister les images disponibles
docker images ghcr.io/epitechafrik/epidocs-frontend --format "table {{.Tag}}\t{{.CreatedAt}}"

# Modifier le tag dans docker-compose.prod.yml puis :
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d

Pipelines CI/CD

gh run list --repo EpitechAfrik/epidocs-frontend
gh run view RUN_ID --repo EpitechAfrik/epidocs-frontend --log-failed

Stack résumée

Composant Technologie
Framework Next.js 16 (App Router)
Runtime Node.js 20
UI React 19 + Chakra UI 2.8 + Tailwind CSS 3.4
Data fetching TanStack React Query 5
HTTP Axios
Formulaires React Hook Form 7
Animations Framer Motion 11
Package manager pnpm 10

Droits admin (catalogue dynamique depuis le 2026-09-09)

Le catalogue n'est plus hardcodé côté frontend : /admin/admins charge la liste en direct via GET /admin/rights (24 droits à la dernière vérification, répartis en 7 groupes + un 8ᵉ groupe other en repli). Détail complet, mécanisme et groupes connus dans frontend.md.

Groupe (group) Exemples de droits
students can_view_students, can_transfer_students, can_edit_student_info
documents can_generate, can_manage_document_types, can_delete_documents
uploads can_upload_user, can_upload_tepitech
campus manage_campus
complaints can_manage_complaints
presence can_scan_attendance, can_manage_attendance
reports can_view_dashboard_stats, can_manage_data_integrity

Attribution

Se fait sur /admin/admins (accordéon par groupe). Un superadmin a implicitement tous les droits — mais si un droit vient d'être créé, un admin déjà connecté ne le voit apparaître qu'après un rechargement complet ou une reconnexion (voir frontend.md — Fraîcheur de la session), ce n'est pas un bug de données.

Pages ajoutées le 2026-09-09

Route Droit requis Description
/admin/data-integrity can_manage_data_integrity Checks d'intégrité de données (registre backend générique)
/admin/attendance/scanners can_manage_attendance Suivi de présence par agent/chaperon, détail par étudiant

Détail complet du module présence (chaperons, annulation de scan, QR perso, architecture des 2 services frontend) : attendance.md.

Variables d'environnement

Variables NEXT_PUBLIC_* = build-time

Un changement de ces variables nécessite un rebuild complet de l'image Docker.

Variable Description
NEXT_PUBLIC_WEB_URL https://mydocs.epitools.bj
NEXT_PUBLIC_API_URL https://api-mydocs.epitools.bj
NODE_ENV production