# Structure du Projet SysVote

## Vue d'ensemble

Ce projet est le site web commercial de SysVote, un système de vote électronique sécurisé. C'est une application PHP avec une interface moderne utilisant Tailwind CSS.

## Structure des fichiers

```
majorware-product/
├── composer.json                      # Configuration Composer pour l'autoloading PSR-4
├── default.php                        # Page par défaut générée par Hostinger (template)
├── index.php                          # Page d'accueil principale du site SysVote
├── README-contact-form.md             # Documentation du formulaire de contact
├── images/                            # Répertoire pour les images (vide)
├── public/                            # Racine web publique
│   ├── contact.php                    # Endpoint PHP pour le traitement du formulaire de contact
│   ├── assets/                        # Assets statiques
│   │   ├── adding_candidates.webm     # Vidéo démo : ajout de candidats
│   │   ├── adding_members.webm        # Vidéo démo : ajout de membres
│   │   ├── add_to_voters_list.webm    # Vidéo démo : ajout à la liste des votants
│   │   ├── after_vote_for_admin.webm  # Vidéo démo : résultats pour admin après vote
│   │   ├── after_vote_for_voters.webm # Vidéo démo : résultats pour votants après vote
│   │   ├── favicon.ico                # Icône du site
│   │   ├── how_to_vote.webm           # Vidéo démo : comment voter
│   │   ├── last_vote_seconds.webm     # Vidéo démo : dernières secondes de vote
│   │   ├── launch_vote.webm           # Vidéo démo : lancement d'un vote
│   │   ├── logo.png                   # Logo SysVote
│   │   ├── Screencast From 2026-08-11 16-12-42.webm  # Capture d'écran
│   │   ├── sysvote_commerciale.png    # Image commerciale
│   │   └── try_adding_candidates.webm # Vidéo démo : tentative d'ajout de candidats
│   └── documentation/                 # Documentation HTML
│       ├── documentation.html         # Page de documentation principale
│       └── images/                    # Images pour la documentation
│           ├── ballot1.jpeg           # Capture d'écran : bulletin de vote 1
│           ├── ballot2.jpeg           # Capture d'écran : bulletin de vote 2
│           ├── candidats1.jpeg        # Capture d'écran : candidats 1
│           ├── candidats2.jpeg        # Capture d'écran : candidats 2
│           ├── district.jpeg          # Capture d'écran : district
│           ├── header.png             # Image d'en-tête
│           ├── home1.jpeg             # Capture d'écran : page d'accueil 1
│           ├── home2.jpeg             # Capture d'écran : page d'accueil 2
│           ├── login2.jpeg            # Capture d'écran : page de connexion
│           ├── preview_images/        # Répertoire vide pour previews
│           ├── results2.jpeg          # Capture d'écran : résultats 2
│           ├── results.png            # Capture d'écran : résultats
│           ├── setting1.jpeg          # Capture d'écran : paramètres 1
│           ├── setting2.jpeg          # Capture d'écran : paramètres 2
│           ├── sysvotecom.ico         # Icône système (vide)
│           ├── sysvote.png            # Logo système (vide)
│           ├── voters1.jpeg           # Capture d'écran : votants 1
│           └── voters2.jpeg           # Capture d'écran : votants 2
├── src/                               # Code source PHP
│   ├── EnvLoader.php                  # Chargeur de fichier .env minimaliste
│   └── SmtpMailer.php                 # Client SMTP minimal pour envoi d'emails
└── vendor/                            # Dépendances Composer (généré)
    ├── autoload.php                   # Autoloader principal
    └── composer/                      # Fichiers d'autoloading Composer
```

## Description détaillée des fichiers

### Fichiers de configuration

- **composer.json** : Fichier de configuration Composer qui définit le namespace PSR-4 `Sethrey\SysvoteWebsite\` pour le dossier `src/`. Le projet n'a pas de dépendances externes requises.

### Fichiers principaux

- **index.php** : Page d'accueil principale du site SysVote. Contient une landing page moderne avec :
  - Navigation sticky avec liens vers différentes sections
  - Section Hero avec présentation du produit
  - Section Interface présentant les différentes interfaces (Admin, Votants, Public)
  - Section Sécurité avec les fonctionnalités de sécurité
  - Section Média avec vidéos de démonstration
  - Section Tarifs et formulaire de contact
  - Utilise Tailwind CSS via CDN pour le styling
  - Contient des animations SVG personnalisées

- **default.php** : Page par défaut générée par Hostinger. C'est un template HTML statique de l'hébergeur, probablement utilisé comme page par défaut avant le déploiement du site principal.

### Documentation

- **README-contact-form.md** : Documentation technique expliquant l'implémentation du formulaire de contact. Détaille :
  - Les fichiers ajoutés pour le formulaire de contact
  - La structure attendue sur le serveur
  - Les étapes de mise en place
  - Les notes techniques sur SMTP et anti-spam

### Code source (src/)

- **src/EnvLoader.php** : Classe utilitaire minimaliste pour charger les fichiers `.env`. 
  - Lit les fichiers KEY=VALUE
  - Gère les commentaires et les guillemets
  - Expose les variables via `getenv()`, `$_ENV` et `$_SERVER`
  - Aucune dépendance externe requise

- **src/SmtpMailer.php** : Client SMTP minimaliste implémenté en PHP pur.
  - Supporte SSL implicite (port 465) et STARTTLS (port 587)
  - Implémente l'authentification AUTH LOGIN
  - Construit les en-têtes MIME et encode les messages
  - Compatible avec des providers comme Hostinger
  - Aucune dépendance externe (pas de PHPMailer)

### Fichiers publics (public/)

- **public/contact.php** : Endpoint PHP qui traite les soumissions du formulaire de contact.
  - Valide les champs du formulaire (nom, organisation, email, message)
  - Utilise un champ "honeypot" caché pour détecter les robots spammeurs
  - Envoie l'email via SmtpMailer
  - Retourne des réponses JSON
  - Configure le champ "Reply-To" avec l'email du visiteur

### Assets multimédia

- **public/assets/** : Contient des vidéos de démonstration (.webm) montrant différentes fonctionnalités du système SysVote :
  - Processus d'ajout de candidats et membres
  - Gestion des listes de votants
  - Interface de vote
  - Affichage des résultats
  - Configuration du système

- **public/documentation/** : Contient la documentation HTML avec des captures d'écran détaillées de l'interface :
  - Page d'accueil et navigation
  - Gestion des candidats et districts
  - Interface de vote et bulletins
  - Affichage des résultats
  - Paramètres et configuration

### Dépendances

- **vendor/** : Répertoire généré par Composer contenant l'autoloader PSR-4. Nécessite l'exécution de `composer install` pour être généré.

## Technologies utilisées

- **PHP** : Langage principal pour le backend
- **Tailwind CSS** : Framework CSS utilisé via CDN
- **Composer** : Gestionnaire de dépendances PHP (pour l'autoloading)
- **SMTP** : Protocole pour l'envoi d'emails
- **HTML5/CSS3/JavaScript** : Frontend moderne et responsive

## Points d'attention

- Le dossier `public/` doit être configuré comme document root de l'hébergement
- Le fichier `.env` doit être présent à la racine et ne doit pas être commité
- Les vidéos sont en format .webm pour une bonne compression
- Le système utilise un honeypot anti-spam dans le formulaire de contact
- Le client SMTP est implémenté en pur PHP sans dépendances externes