Un planning universitaire moderne réalisé par @kernoeb.
- 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é !
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
scriptsdu projet.
- Monorepo Bun workspaces :
apps/(API, PWA, desktop/mobile, extension) etpackages/(config, libs), assets dansresources/. - API
apps/api: Elysia + Drizzle, base PostgreSQL (plus de MongoDB). Les plannings ICS sont lus depuisresources/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).
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).
- Bun (version indiquée dans
.bun-version) - Node.js ≥ 24 (pour certains outils)
- Docker + Docker Compose (PostgreSQL 18 fourni dans
docker-compose.yml)
# 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 devpasse parscripts/run devet ignoreapps/app/apps/extensionpour un démarrage rapide.
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 dansTESTING.md.
- Image publique :
ghcr.io/kernoeb/planningsup. - Exemple
docker-compose.prod.yml(Postgres + webapp).
Créezdb.env(POSTGRES_USER/PASSWORD/DB) etwebapp.envavec 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- Ewennn
- W00dy
- Rick
- Lahgolz
- Dyskal
- Mimipepin
- Atao
- PandAmiral
- ShockedPlot
- BatLeDev
- Louanne M.
- RidzArt
- EDM115
- Xotak
(merci à vous ! ❤️)
Si vous souhaitez me faire un petit don :
