QuickExpo est une plateforme SaaS qui permet aux élèves, étudiants et enseignants de générer rapidement des exposés et rapports académiques structurés et professionnels, à partir de paramètres simples.
Le système repose sur :
- une API backend sécurisée
- un moteur de génération IA
- un workflow de paiement avant téléchargement
- une architecture prête pour la production
- L’utilisateur s’authentifie via Google ou GitHub
- Il crée une commande (
Order) en fournissant :- Thème
- Sujet
- Niveau académique
- Nombre de pages
- Une prévisualisation IA est générée (sans téléchargement)
- L’utilisateur paie via Campay
- Après paiement :
- le document final est généré
- un lien de téléchargement sécurisé est fourni
- L’utilisateur peut consulter l’historique de ses documents
graph TD
A[Frontend React<br/>Vercel] -->|REST API| B[Backend Spring Boot<br/>Render]
B -->|JPA/Hibernate| C[PostgreSQL<br/>Neon.tech]
B -->|API Call| D[HuggingFace<br/>DeepSeek AI]
- Java 21
- Spring Boot 3.5.9
- Spring Web
- Spring Data JPA
- Spring Security (OAuth2)
- Spring Validation
- Hibernate ORM
- WebClient (appel IA)
- PostgreSQL (hébergée sur Neon.tech)
- UUID comme clés primaires
- HuggingFace Inference API
- Modèle : DeepSeek
- Génération de texte académique structuré
- OAuth2 Google
- OAuth2 GitHub
- Enregistrement automatique des utilisateurs
- Campay (Mobile Money)
- Callback sécurisé
- Validation avant génération finale
- Swagger / OpenAPI
- Backend : Render
- Frontend : Vercel
- Base de données : Neon.tech
- Compte utilisateur authentifié via OAuth2
- Peut créer plusieurs commandes
- Dispose d’un historique personnel
- Représente une commande de génération de document
- Liée à un seul utilisateur
- Cycle de vie contrôlé : PENDING → PAID → GENERATING → COMPLETED | FAILED
- Authentification obligatoire pour toute action utilisateur
- Accès aux commandes strictement limité au propriétaire
- Téléchargement protégé par token unique
- Aucune génération finale sans paiement
| Package | Description |
|---|---|
ai |
Intégration HuggingFace / PromptBuilder |
auth |
Gestionnaires OAuth2 (success handlers) |
beans |
Entités JPA |
dto |
Data Transfer Objects |
enums |
Énumérations métier |
mapper |
Mappers (Entity ↔ DTO) |
repository |
Repositories JPA |
service |
Logique métier |
controller |
API REST (endpoints) |
⚠️ Le frontend React est développé dans une branche séparée :
develop-frontend
spring:
datasource:
url: jdbc:postgresql://<NEON_HOST>:5432/<DB_NAME>
username: <DB_USER>
password: <DB_PASSWORD>
jpa:
hibernate:
ddl-auto: update
show-sql: true
security:
oauth2:
client:
registration:
google:
client-id: ${GOOGLE_CLIENT_ID}
client-secret: ${GOOGLE_CLIENT_SECRET}
github:
client-id: ${GITHUB_CLIENT_ID}
client-secret: ${GITHUB_CLIENT_SECRET}
api:
ai:
hugging-face-key: ${HF_API_KEY}
hugging-face-model: deepseek-ai/DeepSeek-V3.2- ☕ Java 21
- 📦 Maven
- 🗄️ Compte Neon.tech (PostgreSQL)
- 🤖 Compte HuggingFace (API Key)
- 🔐 OAuth2 configurés (Google / GitHub)
mvn clean install
mvn spring-boot:run| Service | URL |
|---|---|
| API | http://localhost:8080 |
| Swagger UI | http://localhost:8080/swagger-ui.html |
- ✔️ Authentification OAuth2 (Google, GitHub)
- ✔️ Gestion des utilisateurs
- ✔️ Gestion des commandes
- ✔️ Intégration IA (HuggingFace – Mistral)
- ✔️ Architecture prête pour la production
- Génération IA avancée
- Templates de documents
- Intégration paiement Campay
- Frontend React
Projet conçu et développé dans une optique professionnelle, orientée SaaS, avec une architecture scalable et un déploiement cloud-ready.
[MIT]