You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
4.8 KiB

# 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 <url-du-repo>
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 | `[email protected]` |
| 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**