MMI-ProNote

Pronote-MMI

Application web pour les étudiants MMI, l’idée c’est :


[!WARNING] This is experimental software, primarily built with AI.

Utilisation de l’Intelligence Artificielle (avant tout, autant le mettre ici x))

Ce projet est réalisé MAJORITAIREMENT avec l’aide de l’Intelligence Artificielle. Je suis réellement loin d’avoir le niveau pour réaliser ce projet, mais sa réalisation me permet de progresser et de mieux comprendre comment réellement réaliser un “Logiciel” à un niveau professionnel.

En bref, si vous me dites : “Aaahh, c’est de l’IA”, je répondrai que, pour la majorité, oui. Mais au moins, je sais exactement comment fonctionne l’intégralité du projet et ce que fait chaque partie.

Fonctionnalités


Stack technique

Côté Technologies
Frontend React 18, React Router, Axios, CSS Modules, Vite
Backend Node.js, Express, Socket.IO
Base de données SQLite via Prisma ORM
Auth JWT (jsonwebtoken) + bcryptjs

Prérequis


Installation

1. Cloner le dépôt

git clone https://github.com/Bebbou/Pronote-MMI.git
cd Pronote-MMI

2. Configurer le serveur

cd server
cp .env.example .env
# Remplir JWT_SECRET et DATABASE_URL dans .env
npm install
npx prisma migrate dev --name init
node index.js

3. Configurer le client

cd ../client
npm install
npm run dev

Le client tourne sur http://localhost:5173, le serveur sur http://localhost:3000.


Variables d’environnement

Fichier server/.env (copie de .env.example) :

Variable Description Exemple
DATABASE_URL Chemin vers la base SQLite file:./prisma/dev.db
JWT_SECRET Clé secrète pour signer les tokens JWT une_chaine_aleatoire_longue
CLIENT_ORIGIN URL du frontend (CORS) http://localhost:5173

Structure du projet

Pronote-MMI/
├── client/                 # Frontend React
│   └── src/
│       ├── api/            # Client HTTP Axios
│       ├── components/     # Composants partagés (Layout)
│       ├── context/        # AuthContext (état global auth)
│       ├── hooks/          # useSocket
│       ├── pages/          # Une page par route
│       └── widgets/        # Widgets pour le mode Canvas
├── server/                 # Backend Express
│   ├── middlewares/        # requireAuth, requireRole
│   ├── routes/             # auth, admin, devoirs, notes, edt, profil
│   ├── prisma/
│   │   └── schema.prisma   # Modèles de la base de données
│   └── index.js            # Point d'entrée du serveur
└── README.md

Rôles utilisateurs

Rôle Droits
etudiant Lecture devoirs/EDT, gestion de ses propres notes
delegue + Création/modification/suppression de devoirs
admin Accès complet, gestion des comptes et de l’EDT

Les nouveaux comptes sont en attente de validation par un admin avant de pouvoir se connecter.


Contribuer

Voir CONTRIBUTING.md.

Licence

Ce projet est sous licence MIT — voir LICENSE. </br></br>

License: GPL-3.0-or-later