Application de contrats de partenariat

Application web PHP/SQLite permettant de saisir, signer électroniquement et exporter en PDF des contrats de partenariat commercial, avec authentification et gestion des contrats par utilisateur.

  • PHP (POO)
  • SQLite
  • PDO
  • TCPDF
  • HTML5 / CSS / JS

Projet de formation (Bloc 1) Voir sur GitHub (nouvel onglet)

Captures d'écran

Aperçu de l'application en fonctionnement.

À propos du projet

Application web permettant de saisir, signer et exporter en PDF des contrats de partenariat commercial. Partie d'un simple formulaire HTML, je l'ai étendue en une application complète avec comptes utilisateurs, base de données et génération de documents.

Cadre : TP de développement web réalisé dans le cadre du Bloc 1 (sujet de M. Langloy). Objectif initial : transformer un contrat type fourni en PDF en formulaire HTML optimisé (champs requis, listes, expressions régulières HTML5), puis le faire évoluer.

Fonctionnalités

  • Comptes utilisateurs : inscription et connexion sécurisées (mots de passe hachés).
  • Gestion des contrats : création, édition, consultation et liste des contrats par utilisateur.
  • Formulaire HTML5 : champs obligatoires, listes (datalist), partenaires et contributions dynamiques, contrôle de saisie par expressions régulières.
  • Signature électronique : tracé de la signature dans le navigateur (canvas).
  • Export PDF : génération du contrat finalisé avec ses signatures (TCPDF).

Stack technique

  • PHP orienté objet (classes Database, User, Formulaire).
  • Base de données SQLite via PDO (requêtes préparées).
  • Sessions PHP pour l'authentification.
  • TCPDF pour la génération des PDF ; HTML / CSS / JavaScript côté client.

Compétence du Bloc 1 validée

  • 1.4 : travailler en mode projet (analyse du besoin, découpage en tâches, versionnement Git).

Voir le portfolio E5

Statut

Projet de formation, exécuté en local (serveur XAMPP / Apache + PHP).

Documentation technique

Architecture

L'application suit un schéma de type contrôleur frontal : tout passe par index.php, qui route vers la bonne vue selon le paramètre ?page= (connexion, liste, création, édition, signature, aperçu, PDF…). Le code est séparé entre le cœur (classes métier) et les vues.

src/
  index.php          routeur (front controller)
  config/config.php  configuration + session
  core/              Database.php · User.php · Formulaire.php
  data/              formulaires.db (SQLite)
  lib/TCPDF-main/    génération des PDF
  views/             pages, includes, assets

Modèle de données (SQLite)

Trois tables reliées par clés étrangères :

users(id, email, password, prenom, nom, created_at)
formulaires(id, user_id → users, titre, partenaires,
            nature_activites, repartition_benefices, … )
signatures(id, formulaire_id → formulaires,
           signataire_type, image_data, created_at)

Authentification

Inscription et connexion gérées par la classe User : mots de passe hachés avec password_hash (bcrypt) et vérifiés avec password_verify. L'état de connexion est conservé en session et les pages sensibles (liste, création, signature…) sont protégées : un visiteur non connecté est redirigé vers la page de connexion.

Saisie & contrôle du formulaire

Le contrat reprend la structure d'un contrat de partenariat (partenaires, contributions, répartition des bénéfices, signataires…). Les partenaires et contributions sont dynamiques (collectés côté serveur) et la saisie est fiabilisée par les attributs HTML5 (required, pattern, datalist).

Signature & génération PDF

La signature est tracée dans un <canvas> puis enregistrée (image encodée) dans la table signatures. À l'export, TCPDF assemble les données du contrat et les signatures en un document PDF.

Sécurité

  • Requêtes préparées (PDO) contre les injections SQL.
  • Mots de passe hachés, jamais stockés en clair.
  • Contrôle d'accès par session sur les pages protégées.

Guide utilisateur

Lancer l'application

Démarrer XAMPP (Apache + PHP), placer le projet dans htdocs, puis ouvrir index.php du dossier src dans le navigateur. La base SQLite et ses tables se créent automatiquement au premier lancement.

Créer un compte & se connecter

  1. Sur la page de connexion, créer un compte (nom, prénom, e-mail, mot de passe d'au moins 8 caractères).
  2. Se connecter avec ses identifiants pour accéder à ses contrats.

Créer un contrat

  1. Depuis la liste, cliquer sur « Créer ».
  2. Renseigner le contrat (partenaires, activités, contributions, répartition…). Les champs obligatoires et les formats sont vérifiés à la saisie.
  3. Enregistrer : le contrat apparaît dans la liste.

Signer le contrat

Ouvrir la page de signature, tracer la signature dans la zone prévue (souris ou écran tactile), puis valider. La signature est associée au contrat.

Aperçu & export PDF

Prévisualiser le contrat, puis générer le PDF final (avec les signatures) pour l'imprimer ou l'archiver.

Gérer ses contrats

La liste regroupe tous vos contrats ; chaque ligne permet de consulter, éditer, signer ou exporter le contrat.

Une question ? Me contacter.