Interface web de Mauria, le tableau de bord étudiant Junia.
- React
v19et Vitev6pour une SPA moderne et rapide - TypeScript
v5.7pour la sécurité de typage - Tailwind CSS
v4,tailwindcss-safe-areaettailwindcss-animatepour le design réactif - shadcn/ui, Radix UI et Lucide pour la bibliothèque de composants
- TanStack Query
v5(persistance locale) et React Query Devtools - FullCalendar
v6pour la visualisation du planning - Framer Motion / Motion pour les animations
- Sonner pour les notifications in-app
- Docker + Nginx + Fly.io pour le déploiement
- Sentry pour l’observabilité en production
- Supabase (via l’API Mauria) pour les contenus dynamiques
Nous avons séparé le projet en plusieurs dossiers :
public: assets statiques (icône, manifestes, etc.)src/components: composants transverses (navigation, tiroirs, UI shadcn)src/pages: pages routées (accueil, planning, notes, absences, agenda, secondaires)src/contexts: providers (thème, année scolaire, modales, React Query)src/lib/api: clients Aurion & Supabase, helpers et stockagesrc/lib/utils: utilitaires (planning, agenda, parsing des cours, mises à jour…)src/hooks: hooks personnalisés (mobile, toasts…)src/styles: feuille Tailwind globale et configuration thèmesrc/types: définitions TypeScript partagéescomponents.json: configuration shadcn/uivite.config.ts,tsconfig*.json,eslint.config.js: configuration build & lintDockerfile,nginx.conf,fly.toml: infrastructure de déploiement
L’application utilise l’API Fastify API-v2 pour diriger Aurion et les contenus Supabase. Les informations de session sont stockées côté client et synchronisées avec l’app Ionic via postMessage.
Le planning s’appuie sur FullCalendar, combine les cours Aurion et les événements saisis par l’utilisateur, et permet un export vers l’app mobile. Un agenda léger complète l’expérience avec des rappels locaux.
Transitions animées (Framer Motion), pull-to-refresh, toasts différés, tiroirs contextuels et navigation adaptative mobile/desktop offrent une UX proche de l’application native.
Thème clair/sombre, mise à l’échelle de l’UI et cache React Query gérés via localStorage, permettant un fonctionnement hors ligne partiel et une restitution rapide des données.
- Node.js
v20+ - pnpm
- Accès à l’API Mauria (
https://mauria-api.fly.devpar défaut danssrc/lib/api/helper.ts)
- Cloner le dépôt
- Se placer dans le dossier du projet :
cd Webapp - Installer les dépendances :
pnpm install - Lancer le serveur de développement :
pnpm dev - Accéder à l’application :
http://localhost:5173
- Créer une branche depuis
mainet utiliserpnpmpour la gestion des packages - Respecter les conventions existantes (TypeScript strict, import alias
@/) - Vérifier le formatage Tailwind et lancer
pnpm lintavant toute PR - Tester les parcours clés (planning, notes, absences, agenda) avec l’API
API-v2 - Aligner la communication avec la Landing Page et les autres apps Mauria
Ce projet est sous licence GNU v3. Pour plus d’informations, voir le fichier LICENSE à la racine du projet.