Application web simple de gestion de comptes bancaires permettant de suivre les dépenses et recettes au quotidien.
# Installer les dépendances (aucune, PHP vanilla)
# Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos vraies valeurs
# Initialiser la base de données
php init_db.php
# Lancer le serveur
php -S localhost:8000
# Accéder à l'application
# http://localhost:8000Compte par défaut : admin / admin
| Fichier | Description |
|---|---|
| CLAUDE.md | Documentation technique complète du projet |
| Script | Usage | Description |
|---|---|---|
./test.sh |
Lancer tous les tests | Exécute la suite complète (38 tests) |
php tests/run_tests.php |
Alternative | Même chose que test.sh |
| Script | Usage | Description |
|---|---|---|
php check_db.php |
Vérifier la base | Affiche l'état complet de la DB |
| Script | Usage | Description |
|---|---|---|
./deploy.sh |
Déployer en prod | Synchronise via FTP (protège data/ et .env) |
| Script | Usage | Description |
|---|---|---|
./copy_db_to_windows.sh |
Copie unique | Copie la DB vers C:\Temp\ |
./watch_db.sh |
Sync auto | Synchronisation continue (laisser tourner) |
accounts/
├── 📄 Documentation
│ ├── README.md # Ce fichier
│ └── CLAUDE.md # Doc technique complète
│
├── 🔧 Configuration
│ ├── .env.example # Template de configuration
│ ├── .env # Configuration (ne pas committer)
│ ├── config.php # Configuration PHP
│ ├── email_config.php # Configuration SMTP
│ └── migrations.php # Système de migrations
│
├── 🗄️ Base de Données
│ ├── init_db.php # Initialisation
│ ├── data/
│ │ └── accounts.db # Base SQLite
│ └── migrations/ # Futures migrations
│
├── 🌐 Pages Publiques
│ ├── login.php
│ ├── register.php
│ ├── forgot_password.php
│ └── reset_password_form.php
│
├── 🔒 Pages Protégées
│ ├── index.php # Dashboard principal
│ ├── admin.php # Interface admin
│ ├── settings.php # Paramètres utilisateur
│ └── logout.php
│
├── 🎨 Assets
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── password-toggle.js
│ └── includes/
│ ├── auth_page_header.php
│ ├── auth_page_footer.php
│ ├── sidebar.php
│ └── migrations_alert.php
│
├── 🧪 Tests
│ ├── test.sh # Runner simple
│ ├── run_tests.php # Runner principal
│ ├── TestFramework.php # Framework custom
│ ├── TestHelper.php # Utilitaires
│ ├── unit/ # Tests unitaires (20)
│ │ ├── ConfigTest.php
│ │ ├── DatabaseTest.php
│ │ └── EmailTest.php
│ └── integration/ # Tests d'intégration (18)
│ ├── AuthTest.php
│ ├── TransactionTest.php
│ └── CategoryTest.php
│
└── 🛠️ Utilitaires
├── check_db.php # Vérification DB
├── copy_db_to_windows.sh # Copie DB (PHPStorm)
└── watch_db.sh # Sync DB (PHPStorm)
L'application dispose d'une suite de tests complète :
# Lancer tous les tests
./test.sh
# Ou
php tests/run_tests.phpCouverture :
- 38 tests (20 unitaires + 18 intégration)
- Framework lightweight (KISS)
- Base de données de test isolée
- Exécution rapide (~1-2s)
- Backend : PHP 8+ (vanilla, sans framework)
- Base de données : SQLite
- Frontend : HTML5, CSS3 (thème sombre)
- Configuration : Fichier .env (Laravel-style)
- ✅ Login/Logout avec sessions
- ✅ Inscription avec email
- ✅ Réinitialisation de mot de passe par email
- ✅ Toggle visibilité mot de passe
- ✅ Ajout de recettes/dépenses
- ✅ Association avec catégories
- ✅ Filtrage par mois
- ✅ Calcul du solde en temps réel
- ✅ Suppression avec confirmation
- ✅ Interface admin (
/admin.php) - ✅ Gestion des migrations
- ✅ Statistiques globales
- ✅ Système d'alertes
- ✅ Affichage année dans les dates
- ✅ Stockage en base de données
- ✅ Interface intuitive
- ✅ Hashage des mots de passe (bcrypt)
- ✅ Prepared statements (SQL injection)
- ✅ Validation des entrées
- ✅ Protection des pages par session
- ✅ Tokens sécurisés pour reset password
- ✅ Configuration sensible dans .env (hors Git)
# 1. Lancer les tests
./test.sh
# 2. Déployer
./deploy.shLe script synchronise automatiquement les fichiers via FTP tout en préservant :
- ✅ La base de données de prod (
data/) - ✅ Le
.envde prod - ✅ Les fichiers qui ne doivent pas être en prod (tests, docs, etc.)
Configuration FTP dans .env :
FTP_HOST=ftp.example.com
FTP_USER=username
FTP_PASSWORD=password
FTP_REMOTE_PATH=/www/path/to/appBase de données verrouillée ?
pkill -f "php -S"
php check_db.phpPHPStorm ne peut pas lire la DB (WSL) ?
./copy_db_to_windows.sh
# Puis dans PHPStorm: C:\Temp\accounts.db- DRY - Don't Repeat Yourself
- KISS - Keep It Simple, Stupid
- SOLID - Principes de conception objet
- Tests - Suite complète pour éviter les régressions
- Documentation - Tout est documenté
- Créer une branche
- Faire les modifications
- Lancer les tests :
./test.sh - Commit si tous les tests passent
- Push
- Écrire les tests en premier
- Implémenter la fonctionnalité
- Vérifier que les tests passent
- Documenter dans CLAUDE.md
Projet personnel - Tous droits réservés