Skip to content

kernoeb/PlanningSup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


PlanningSup
PlanningSup

Un planning universitaire moderne réalisé par @kernoeb.

DeepScan grade

img.png

Fonctionnalités

  • PWA hors connexion avec installation sur bureau et mobile
  • Couleurs par catégorie ou UE, thèmes clair/sombre
  • Vues jour / semaine / mois, zoom sur un cours, sélection multiple
  • Rafraîchissement automatique (chargement, focus, toutes les 2 minutes)
  • Liste de blocage (cacher un cours) et mise en avant de l’enseignant
  • Changement d’université/spécialité via cookie ou paramètres

N'hésitez pas à créer une issue ou à me contacter sur Telegram (@kernoeb) ou Discord (kernoeb) pour plus d'infos, pour me notifier d'une erreur ou proposer une fonctionnalité !

Ajouter une spécialité ou une université

Si votre université (ou autre !) accepte le format ICS pour les calendriers, vous pouvez ouvrir une Pull Request en modifiant le fichier .json correspondant dans resources/plannings.

Avec @matissePe et @ShockedPlot7560, nous avons réalisé un script pour générer automatiquement le JSON dans la bonne forme, situé dans le dossier scripts du projet.

Stack & architecture

  • Monorepo Bun workspaces : apps/ (API, PWA, desktop/mobile, extension) et packages/ (config, libs), assets dans resources/.
  • API apps/api : Elysia + Drizzle, base PostgreSQL (plus de MongoDB). Les plannings ICS sont lus depuis resources/plannings/*.json, convertis à la volée et sauvegardés en backup dans Postgres.
  • Front apps/web : Vue 3 + Vite + DaisyUI (Tailwind). Sert la PWA et consomme l’API (/plannings, /plannings/:fullId?events=true).
  • Jobs : runner Bun avec fenêtres de silence configurables (RUN_JOBS, JOBS_QUIET_HOURS), notamment pour le backup des plannings.
  • Partagé : presets Vite/TS (packages/config) et utilitaires ESLint/TS (packages/libs).

Structure du dépôt

  • apps/api : service Elysia, migrations/ORM Drizzle.
  • apps/web : PWA Vue 3.
  • apps/app : cibles desktop/mobile (Tauri).
  • apps/extension : extension navigateur.
  • packages/libs, packages/config : outillage partagé.
  • resources/plannings : JSON ICS par établissement.
  • test/ : unitaires, intégration, E2E (Playwright).

Pré-requis

  • Bun (version indiquée dans .bun-version)
  • Node.js ≥ 24 (pour certains outils)
  • Docker + Docker Compose (PostgreSQL 18 fourni dans docker-compose.yml)

Démarrage rapide (développement)

# 1. Dépendances
bun install

# 2. Variables d'environnement API
cp apps/api/.env.example apps/api/.env
# DATABASE_URL par défaut : postgres://planningsup:mysecretpassword@localhost:5432/planningsup

# 3. Lancer tout le stack
bun dev
# -> démarre Postgres via docker compose puis API (http://localhost:20000) et PWA (http://localhost:4444)
  • Les migrations Drizzle et la synchronisation des plannings sont exécutées au démarrage de l’API.
  • bun dev passe par scripts/run dev et ignore apps/app/apps/extension pour un démarrage rapide.

Commandes utiles

  • bun run build : build de tous les packages applicables.
  • bun run lint · bun run lint-fix : ESLint.
  • bun run typecheck : vérification TS.
  • bun run test:unit : tests unitaires Bun.
  • bun run test:integration : tests d’intégration (Docker requis).
  • bun run test:e2e (+ variantes :safari, :headed, :debug) : Playwright.
    Plus de détails dans TESTING.md.

Déploiement Docker

  • Image publique : ghcr.io/kernoeb/planningsup.
  • Exemple docker-compose.prod.yml (Postgres + webapp).
    Créez db.env (POSTGRES_USER/PASSWORD/DB) et webapp.env avec au minimum :
DATABASE_URL=postgres://planningsup:mysecretpassword@postgres:5432/planningsup
PORT=20000
RUN_JOBS=true
PUBLIC_ORIGIN=https://planningsup.app
TRUSTED_ORIGINS=https://planningsup.app

Donateurs

(merci à vous ! ❤️)

Si vous souhaitez me faire un petit don :

PayPal

Support me on Buy Me a Coffee