Skip to content

amirroba/KouClean

Repository files navigation

KouClean

Application de gestion d'une entreprise de nettoyage professionnel

Java Spring Boot React PostgreSQL JWT License


Projet de stage de fin d'études — M1 Informatique
Université de Bretagne Occidentale (UBO) · Avril – Juin 2026


Présentation

KouClean est une application web full-stack développée pour digitaliser et centraliser la gestion opérationnelle d'une société de nettoyage professionnel. Elle couvre l'intégralité du cycle de vie client : de la demande de devis jusqu'à la facturation, en passant par la planification des interventions et la gestion du personnel.

L'application propose :

  • Un site vitrine public pour les prospects (devis, contact, services)
  • Un espace administrateur complet protégé par authentification JWT
  • Une API REST documentée consommée par le frontend React

Stack technique

Couche Technologie Version
Frontend React, React Router, MUI, Tailwind CSS, Framer Motion 18 / v7 / v9 / v4
Backend Spring Boot, Java 3.3.5 / 17
Base de données PostgreSQL 14+
ORM Spring Data JPA / Hibernate
Sécurité Spring Security + JWT (JJWT) 0.11.5
PDF iTextPDF 5.5
Email Spring Mail (SMTP)
HTTP client Axios

Architecture

kouclean/
├── backend/                          # API REST Spring Boot — port 8080
│   └── src/main/java/.../
│       ├── controller/               # 11 endpoints REST
│       │   ├── AuthController        # Authentification JWT
│       │   ├── ClientController      # CRUD Clients
│       │   ├── AgentController       # CRUD Agents
│       │   ├── InterventionController# Planification
│       │   ├── ContratController     # Gestion contrats
│       │   ├── FactureController     # Facturation + PDF
│       │   ├── DevisController       # Demandes de devis
│       │   ├── SiteController        # Sites clients
│       │   ├── ProduitController     # Gestion stock
│       │   ├── PhotoController       # Upload photos
│       │   └── ContactController     # Formulaire contact
│       ├── entity/                   # 9 entités JPA
│       ├── repository/               # Spring Data repositories
│       ├── service/                  # Services métier (PDF, email)
│       └── security/                 # JWT filter + Spring Security
│
├── frontend/                         # Application React — port 3000
│   └── src/
│       ├── pages/                    # Pages publiques + admin
│       │   └── admin/                # Dashboard, modules CRUD
│       ├── components/               # Composants réutilisables
│       └── api.js                    # Client Axios centralisé
│
└── base_donnee.sql                   # Schéma PostgreSQL de référence

Modèle de données

Client ──────────< Site ──────────< Intervention >── Agent
  │                                                     │
  ├───< Contrat                                         │
  │                                           (affecté à une intervention)
  └───< Facture

Devis          (demandes publiques non liées à un compte)
Produit        (gestion du stock de produits de nettoyage)
ContactMessage (formulaire de contact public)

Fonctionnalités

Site vitrine (accès public)

  • Présentation des prestations de l'entreprise
  • Formulaire de demande de devis en ligne
  • Formulaire de contact avec notification email
  • Page À propos et équipe

Espace administrateur (JWT requis)

Module Description
Dashboard KPIs en temps réel : devis en attente, interventions planifiées / terminées
Clients CRUD complet, recherche, filtres, statut VIP
Agents Gestion du personnel de nettoyage, affectations
Sites Sites clients rattachés à leurs propriétaires
Interventions Planification, vue calendrier, gestion des statuts
Contrats Création, suivi et archivage des contrats
Devis Réception, validation ou refus des demandes
Factures Génération PDF, suivi des paiements
Produits Inventaire et gestion du stock
Reporting Upload de photos avant/après intervention

Installation

Prérequis

Outil Version minimale
Java (JDK) 17
Maven 3.8
Node.js 18
PostgreSQL 14

1. Base de données

-- Créer la base
CREATE DATABASE nettoyage_db;
# Injecter le schéma
psql -U postgres -d nettoyage_db -f base_donnee.sql

2. Configuration backend

Éditer backend/src/main/resources/application.properties :

spring.datasource.url=jdbc:postgresql://localhost:5432/nettoyage_db
spring.datasource.username=VOTRE_UTILISATEUR
spring.datasource.password=VOTRE_MOT_DE_PASSE

3. Lancer le backend

cd backend
mvn spring-boot:run

L'API REST démarre sur http://localhost:8080

4. Lancer le frontend

cd frontend
npm install
npm start

L'interface démarre sur http://localhost:3000


Accès administrateur (démo)

Champ Valeur
URL http://localhost:3000/login
Email admin@kouclean.com
Mot de passe admin123

API — Principaux endpoints

Méthode Route Description Auth
POST /api/auth/login Authentification, retourne JWT
GET /api/clients Liste des clients
POST /api/devis Soumettre une demande de devis
GET /api/interventions Liste des interventions
GET /api/factures/{id}/pdf Générer une facture PDF
POST /api/contact Envoyer un message de contact

Toutes les routes protégées (✅) nécessitent un header Authorization: Bearer <token>.


Branches

Branche Rôle
main Version stable, production-ready (PostgreSQL)
develop Développement en cours, intégration des nouvelles features

Auteur

Amir Roba
Étudiant M1 Informatique — Université de Bretagne Occidentale (UBO)
Stage : 13 avril – 15 juin 2026 · Entreprise : KouClean / Propre & Confort


Licence

Ce projet est distribué sous licence MIT.

About

Application web full-stack de gestion d'une entreprise de nettoyage professionnel — Stage M1 UBO 2026

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors