# C-University Application de gestion universitaire desktop, développée avec **Electron + React + Vite**. Elle permet la gestion complète des étudiants, des notes, des matières, des mentions et des années scolaires d'un établissement universitaire. > Développé par **CPAY COMPANY FOR MADAGASCAR** --- ## Fonctionnalités - **Gestion des étudiants** — inscription, consultation, modification, export PDF/Excel, import CSV - **Gestion des notes** — saisie, notes de rattrapage (repêchage), calcul automatique des moyennes - **Résultats** — admis / redoublant / renvoyé selon un système de seuils configurables - **Mentions & Parcours** — gestion des filières et des spécialisations - **Matières** — création, affectation aux mentions et aux semestres, import CSV - **Niveaux académiques** — gestion des niveaux d'étude (L1, L2, M1, M2, etc.) - **Années scolaires** — gestion multi-années avec année courante active - **Tranche d'écolage** — suivi des paiements de scolarité par étudiant - **Export de fiches** — génération de fiches matières avec QR code et PDF - **Statistiques & graphiques** — visualisation via Chart.js - **Gestion des utilisateurs** — authentification sécurisée, rôles admin - **Mise à jour automatique** — via `electron-updater` --- ## Stack technique | Couche | Technologies | |--------|-------------| | Desktop | Electron 31 | | Frontend | React 18, Vite, React Router DOM v6 | | UI | Material UI (MUI v6), Bootstrap 5, React-Bootstrap | | État | TanStack React Query, Context API | | Base de données | MySQL (mysql2), better-sqlite3 | | API locale | Express.js | | PDF | jsPDF, jsPDF-AutoTable, pdf-lib, html2canvas | | Excel/CSV | xlsx, xlsx-populate, PapaParse, csv-parse | | Authentification | bcryptjs | | Graphiques | Chart.js, react-chartjs-2 | | QR Code | qrcode | | Logs | electron-log | --- ## Prérequis - [Node.js](https://nodejs.org/) >= 18 - [MySQL](https://www.mysql.com/) (serveur local actif) - npm >= 10 --- ## Installation ### 1. Cloner le dépôt ```bash git clone cd c-university ``` ### 2. Installer les dépendances ```bash npm install ``` ### 3. Configurer la base de données Assurez-vous que MySQL est en cours d'exécution. La configuration par défaut dans `database/database.js` est : ``` Host : 127.0.0.1 User : root Password : (vide) Database : university ``` > Les tables sont créées automatiquement au premier lancement. Un compte **admin** par défaut est également créé. --- ## Lancement ### Mode développement ```bash npm run dev ``` ### Prévisualisation du build ```bash npm run start ``` --- ## Build & Distribution | Commande | Description | |----------|-------------| | `npm run build` | Build de l'application | | `npm run build:win` | Installateur Windows (.exe via NSIS) | | `npm run build:mac` | Package macOS | | `npm run build:linux` | Package Linux | | `npm run build:unpack` | Build sans package (dossier non compressé) | --- ## Compte par défaut | Champ | Valeur | |-------|--------| | Utilisateur | `admin` | | Email | `admin@example.com` | | Mot de passe | `123456789` | > Il est fortement recommandé de changer le mot de passe après le premier login. --- ## Structure du projet ``` c-university/ ├── database/ │ └── database.js # Connexion MySQL + création des tables ├── src/ │ ├── main/ # Processus principal Electron │ ├── preload/ # Scripts de préchargement │ └── renderer/src/ # Interface React │ ├── components/ # Composants de l'application │ ├── Routes/ # Configuration du routeur │ ├── contexts/ # Contextes React (Auth, Moyenne) │ ├── layouts/ # Layouts (Default, Login) │ └── assets/ # Images et ressources ├── resources/ # Icônes et ressources Electron ├── electron.vite.config.mjs # Configuration Electron-Vite ├── electron-builder.yml # Configuration du packaging └── package.json ``` --- ## Schéma de base de données (résumé) | Table | Description | |-------|-------------| | `users` | Comptes utilisateurs avec rôles | | `etudiants` | Données complètes des étudiants | | `mentions` | Filières / mentions | | `parcours` | Parcours au sein d'une mention | | `niveaux` | Niveaux académiques | | `matieres` | Matières / UE | | `semestres` | Semestres | | `notes` | Notes des étudiants | | `notesrepech` | Notes de rattrapage | | `notesystems` | Seuils admis / redoublant / renvoyé | | `anneescolaire` | Années scolaires | | `trancheecolage` | Tranches de paiement de scolarité | | `matiereEnseignants` | Enseignants par matière | | `status` | Statuts étudiants (Nouveau, Passant, Redoublant…) | --- ## Version **v4.1.0**