← Retour aux projets

Intranet CH Cahors

Refonte de l'intranet hospitalier en CMS sur mesure : migration du contenu Joomla vers Next.js avec TypeScript, React, Prisma et PostgreSQL, interface d'administration responsive et flux de publication.

Technologies

Next.jsTypeScriptReactPrismaPostgreSQLTipTapTailwind

Détail du projet

Contexte - L'ancien intranet du Centre Hospitalier Jean Rougier (Cahors) reposait sur Joomla. Il fallait le remplacer par un CMS sur mesure, plus adapté aux besoins des équipes et plus simple à maintenir.

Objectifs - Permettre à tout le monde de créer et gérer des pages, articles et contenus sans coder, migrer les données existantes de MySQL (Joomla) vers PostgreSQL, mettre en place une gestion des utilisateurs et des rôles avec permissions (accès selon les responsabilités : lecteur, éditeur, administrateur).

Méthodologie - Gestion de projet avec Monday.com, maquettes et prototypes avec Figma, développement en sprints. Analyse de l'existant et recueil des besoins des utilisateurs avant la conception technique.

Développement - Menu de navigation dynamique selon les droits, API REST pour les pages, articles et médias, éditeur de contenu riche (TipTap) avec tables, listes, tâches, couleurs, liens et images, et collaboration temps réel (Yjs, Hocuspocus), gestion des fichiers, images et vidéos, authentification JWT (jose, bcrypt), rôles et permissions en base (Prisma), déploiement et mise en production.

Stack technique - Next.js 14 (App Router), TypeScript, React, Prisma (ORM), PostgreSQL. UI : NextUI, Radix UI, Tailwind CSS, react-hook-form + Zod. Cache côté client : SWR. Tests : Jest + Testing Library. Structure : app/, components/, prisma/, middleware d'auth.

Résultats - Interface CMS livrée avec page d'accueil, menu selon le profil, formulaire de connexion, espaces d'édition pour les pages et articles, gestion des médias. Un rapport de stage détaillé (PDF) décrit l'ensemble du projet.

Galerie

Page d'accueil (utilisateur connecté)
Page d'accueil (utilisateur connecté)
Menu de navigation
Menu de navigation
Formulaire de connexion
Formulaire de connexion
Interface d'édition de contenu
Interface d'édition de contenu
Gestion des médias et fichiers
Gestion des médias et fichiers
Éditeur riche (TipTap)
Éditeur riche (TipTap)
Aperçu d'une page publiée
Aperçu d'une page publiée
Interface d'administration - gestion des utilisateurs et rôles
Interface d'administration - gestion des utilisateurs et rôles
Interface d'administration - création d'un rôle et permissions
Interface d'administration - création d'un rôle et permissions