TREK

TREK - Plateforme de Partage de Ressources Pédagogiques

Théo de Romain Édouard pour Kento

Plateforme interne de JUNIA pour la gestion et le partage collaboratif de ressources pédagogiques entre enseignants.


📋 Table des matières


🎯 Contexte du projet

Problématique

JUNIA est une école d’ingénieurs regroupant de nombreux enseignants, incluant des enseignants-chercheurs internes et des intervenants externes. Actuellement, le partage des ressources pédagogiques entre enseignants présente plusieurs défis :

Solution

TREK est une plateforme centralisée permettant aux enseignants de :


✨ Fonctionnalités principales

📁 Gestion de documents

🔐 Sécurité des documents

📄 Prévisualisation et conversion

🗂️ Organisation


🏗️ Architecture technique

┌─────────────────────────────────────────────────────────────┐
│                         Frontend                            │
│                  React 18 + TypeScript                      │
│                   Vite + TanStack Router                    │
└────────────────────────┬────────────────────────────────────┘
                         │ HTTP/REST
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                         Backend                             │
│              Spring Boot 3.5 + Java 17                      │
│        JPA/Hibernate + PostgreSQL + Flyway                  │
└────────┬─────────────────────────┬──────────────────────────┘
         │                         │
         │ Conversion              │ Auth/SSO
         ▼                         ▼
┌──────────────────┐      ┌──────────────────┐
│   Gotenberg      │      │    Keycloak      │
│  (Office → PDF)  │      │  (Auth + Roles)  │
└──────────────────┘      └──────────────────┘
         │
         │ Storage
         ▼
┌──────────────────┐
│   MinIO / S3     │
│  (Fichiers)      │
└──────────────────┘

Stack technique


📦 Prérequis

Obligatoire

Recommandé pour le développement


📂 Structure du projet

TREK/
├── backend/                  # Backend Spring Boot
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/com/junia/trek/backend/
│   │   │   │   ├── controller/     # API REST endpoints
│   │   │   │   ├── service/        # Logique métier
│   │   │   │   ├── repository/     # JPA repositories
│   │   │   │   ├── entity/         # Entités JPA
│   │   │   │   ├── dto/            # Data Transfer Objects
│   │   │   │   ├── mapper/         # Entity ↔ DTO mappers
│   │   │   │   ├── exception/      # Exceptions custom
│   │   │   │   └── config/         # Configuration Spring
│   │   │   └── resources/
│   │   │       ├── application.properties
│   │   │       └── db/migration/   # Scripts Flyway
│   │   └── test/
│   ├── Dockerfile
│   └── pom.xml
│
├── frontend/                 # Frontend React
│   ├── src/
│   │   ├── components/       # Composants React
│   │   ├── routes/           # Routes TanStack Router
│   │   ├── hooks/            # Custom hooks
│   │   ├── services/         # API clients
│   │   └── types/            # Types TypeScript
│   ├── Dockerfile
│   └── package.json
│
├── compose.yml               # Docker Compose configuration
├── Taskfile.yml              # Commandes task
├── .github/workflows/        # CI/CD GitHub Actions
├── doc/                      # Documentation
└── README.md

🛠️ Technologies utilisées

Backend

Technologie Version Usage
Spring Boot 3.5.6 Framework backend
Java 17 Langage
PostgreSQL 18 Base de données
Flyway 11.2 Migration de schéma
Apache PDFBox 3.0.3 Watermarking PDF
Apache Tika 3.2.3 Validation fichiers
SpringDoc OpenAPI 2.7.0 Documentation API (Swagger)
Keycloak 26.0.4 Authentification et gestion des rôles
Gotenberg 8 Conversion Office → PDF

Frontend

Technologie Version Usage
React 18.3 Framework UI
TypeScript 5.6 Langage
Vite 6.0 Build tool + dev server
TanStack Router 1.91 Routing
TanStack Query 5.62 State management + cache
Tailwind CSS 3.4 Styling

DevOps

Technologie Version Usage
Docker/Podman Latest Conteneurisation
GitHub Actions - CI/CD
Trivy 0.33 Scan de vulnérabilités
Husky 9.1 Git hooks
Commitlint 19.7 Validation des commits
lint-staged 15.3 Linting pré-commit
Task 3.x Task runner

🤝 Contribution

Workflow Git

  1. Créer une branche depuis main :

    git checkout main
    git pull
    git checkout -b feat/ma-fonctionnalite
    
  2. Commits conventionnels (obligatoire) :

    git commit -m "feat: ajouter la fonctionnalité X"
    git commit -m "fix: corriger le bug Y"
    git commit -m "docs: mettre à jour le README"
    

    Types autorisés : feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert

  3. Push et Pull Request :

    git push origin feat/ma-fonctionnalite
    # Créer une PR sur GitHub
    
  4. Review et merge : Attendre l’approbation et les checks CI/CD avant merge

Standards de code

Pour plus de détails, voir CONTRIBUTING.md


📄 Licence et équipe

Projet académique - JUNIA (Hauts-de-France School of Engineering)

Développé par des étudiants en 3ème année cycle ingénieur dans le cadre d’un projet de semestre.


📞 Support

Pour toute question ou problème :

  1. Consulter la documentation
  2. Contacter l’équipe de développement

Fait avec ❤️ par l’équipe TREK