https://github.com/mathieu2301/pronotif
Interface intermédiaire pour Pronote: plus jolie, plus rapide, fonctionne hors-ligne, système d'amis, notifications, etc...
https://github.com/mathieu2301/pronotif
application-pronote devoirs emploi-du-temps ent nouveaux-devoirs pronote rapide retards
Last synced: 4 months ago
JSON representation
Interface intermédiaire pour Pronote: plus jolie, plus rapide, fonctionne hors-ligne, système d'amis, notifications, etc...
- Host: GitHub
- URL: https://github.com/mathieu2301/pronotif
- Owner: Mathieu2301
- Created: 2020-09-19T21:37:04.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-06-01T14:31:33.000Z (almost 2 years ago)
- Last Synced: 2025-02-01T18:22:19.023Z (4 months ago)
- Topics: application-pronote, devoirs, emploi-du-temps, ent, nouveaux-devoirs, pronote, rapide, retards
- Language: JavaScript
- Homepage: https://pronotif.fr
- Size: 785 KB
- Stars: 10
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# Pronotif
[Pronotif](https://pronotif.fr/) est une application web (PWA) permettant de remplacer totalement l'application Pronote tout en étant beaucoup plus rapide au démarrage, fluide, belle et intuitive.
▷ **Disponible sur [pronotif.fr](https://pronotif.fr/)**
▷ Instagram [**@pronotif**](https://www.instagram.com/pronotif/)## Fonctionnalités actuelles
- Notifications de nouveaux devoirs, notes, retards, absences, etc...
- Notifications du **prochain cours** ou du **cours actuel**
- Emploi du temps, liste des devoirs, liste des notes, menu du jour, etc...
- Accédez à **l'emploi du temps de vos amis** et **partagez le votre** avec eux !
- Démarrage **16 fois** plus rapide que Pronote (**0.25 secondes** pour Pronotif contre **4.15 secondes** pour l'application Pronote)
- **Disponible en hors ligne** (contrairement à l'appli Pronote)## Screenshots

## Fonctionnement
Toutes les 10 minutes, le serveur (Node) récupère la liste des utilisateurs depuis le Cloud Firestore et traite chacun d'eux.
Le traitement d'un utilisateur consiste à:
1. Ouvrir une session Pronote avec les identifiants de l'utilisateur
2. Récupérer les données utiles (emploi du temps, devoirs, notes, absences, retards, etc...)
3. Comparer les données stockées dans le Cloud Firestore et les données récentes
4. Si des nouvelles données sont détectées (nouveaux devoirs, nouvelle note, etc...), envoyer une notification à l'utilisateur
5. Si des nouvelles données sont détectées, mettre à jour les données du Cloud Firestore___
## Installation pour développement
### Cloner le repo
```sh
git clone https://github.com/Mathieu2301/Pronotif.git
```### Initialisation du serveur
#### Installer les dépendances pour le serveur
```sh
yarn
```#### Créer un fichier `.env` sur le modèle suivant
```sh
FIREBASE_CREDENTIALS={"type":"service_account", ...}
FIREBASE_DB='https://xxxxxxx.firebaseio.com'PWD_PRIVATE_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PWD_SALT=XXXXXXXXXXXXXXXXPORT=3000 # Optionnel
PRODUCTION=false # Optionnel
NOTIFICATIONS=false # Optionnel
```- La valeur de "pwd_private_key" par une chaine random de **32** caractères
- La valeur de "pwd_salt" par une chaine random de **16** caractères### Initialisation de l'interface Vue
#### Installer les dépendances pour l'interface
```sh
cd ./vue-app
npm i
```#### Serve l'interface en hot reload
```sh
npm run serve
```## Déploiement
### Déploiement du frontend
Le frontend est automatiquement build et déployé sur Firebase Hosting à chaque push sur la branche `master`.
### Déploiement du backend
Le backend est automatiquement build et push sur GHCR à chaque push sur la branche `master`.
Voici un exemple de stack pour déployer le backend:```yml
version: '3'services:
agent:
image: ghcr.io/mathieu2301/pronotif-agent:latest
restart: always
environment:
FIREBASE_CREDENTIALS: ${FIREBASE_CREDENTIALS}
FIREBASE_DB: ${FIREBASE_DB}PWD_PRIVATE_KEY: ${PWD_PRIVATE_KEY}
PWD_SALT: ${PWD_SALT}PRODUCTION: false
NOTIFICATIONS: false
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.pronotif.rule=Host(`${SERVER_URL}`)'
- 'traefik.http.routers.pronotif.entrypoints=https'networks:
default:
name: traefik_web
external: true
```___
## Problèmes
Si vous obtenez des erreurs dans la console ou que vous observez un comportement indésirable, merci d'ouvrir une issue [**ici**](https://github.com/Mathieu2301/Pronotif/issues).