Application bancaire moderne développée avec Angular, offrant une gestion complète des comptes, transactions et transferts avec une interface utilisateur intuitive et sécurisée.
- Fonctionnalités
- Architecture
- Installation
- Démarrage
- Technologies
- Structure du projet
- API Backend
- Sécurité
- Équipe
- 🔐 Inscription et connexion sécurisées
- 🔢 Code PIN à 6 chiffres avec clavier aléatoire (sécurité renforcée)
- 🔒 Gestion des sessions avec JWT
- 👤 Vérification de l'existence d'utilisateur
- 📊 Vue d'ensemble des comptes et soldes
- 💰 Solde total agrégé
- 📈 Statistiques financières (nombre de comptes, transactions récentes, cashback)
- ⚡ Actions rapides (Nouveau compte, Virement, Transactions, etc.)
- ➕ Création de nouveaux comptes
- 📋 Liste de tous les comptes avec soldes
- 🔍 Détails d'un compte spécifique
- 📊 Historique des transactions par compte
- 💸 Création de nouvelles transactions
- 📜 Liste des transactions avec filtres (par statut, recherche textuelle)
- 🎯 Détails d'une transaction
- ❌ Annulation de transaction (si statut ≠ completed)
- ✅ Confirmation visuelle après création
- 🔄 Actualisation en temps réel du statut
- 👤 Affichage des informations personnelles
- 🏷️ Code client unique
- 🚪 Déconnexion sécurisée
Le projet suit une architecture modulaire Angular avec séparation des responsabilités :
src/app/
├── core/ # Services, modèles, guards, interceptors
│ ├── guards/ # Protection des routes (authGuard)
│ ├── interceptors/ # HTTP interceptors (auth, error)
│ ├── models/ # Interfaces TypeScript
│ └── services/ # Services métier
├── features/ # Modules fonctionnels
│ ├── auth/ # Authentification
│ ├── dashboard/ # Tableau de bord
│ ├── accounts/ # Gestion des comptes
│ ├── transactions/ # Gestion des transactions
│ ├── profile/ # Profil utilisateur
│ └── home/ # Page d'accueil
├── layout/ # Composants de mise en page
│ ├── header/ # En-tête avec navigation
│ └── footer/ # Pied de page
└── shared/ # Composants réutilisables
├── components/ # Composants partagés
├── directives/ # Directives personnalisées
└── pipes/ # Pipes personnalisés
- Standalone Components : Utilisation des composants autonomes Angular 18
- Reactive Forms : Validation robuste avec FormBuilder
- RxJS Observables : Gestion asynchrone des données
- Route Guards : Protection des routes authentifiées
- HTTP Interceptors : Injection automatique du token JWT
- Lazy Loading : Chargement différé des modules pour optimiser les performances
- Node.js (v18 ou supérieur)
- npm (v9 ou supérieur)
- Angular CLI (v18.2.6)
- Cloner le dépôt
git clone <url-du-repo>
cd HeyBank- Installer les dépendances
npm install- Configuration de l'environnement
Vérifiez le fichier src/environments/environment.ts :
export const environment = {
production: false,
apiUrl: 'https://coding-bank.fly.dev/api'
};ng serveNaviguez vers http://localhost:4200/. L'application se rechargera automatiquement si vous modifiez les fichiers sources.
ng build --configuration productionLes artefacts de build seront stockés dans le répertoire dist/.
ng testExécute les tests unitaires via Karma.
ng lint- Angular 18.2.6 - Framework JavaScript
- TypeScript 5+ - Langage de programmation
- RxJS - Programmation réactive
- Bootstrap 5 - Framework CSS
- Angular Router - Navigation
- Reactive Forms - Gestion des formulaires
- Angular CLI - Outil de ligne de commande
- Karma/Jasmine - Tests unitaires
- ESLint - Linting du code
- Guards :
authGuardpour protéger les routes authentifiées - Interceptors : Injection automatique du JWT, gestion des erreurs HTTP
- Models : Interfaces TypeScript pour Account, Transaction, User, etc.
- Services :
AuthService: Authentification et gestion des sessionsAccountService: CRUD des comptesTransactionService: Gestion des transactionsDashboardService: Agrégation des statistiques
Chaque feature est un module indépendant avec ses composants, templates et styles :
- Auth : Login, Register avec digicode sécurisé
- Dashboard : Cartes de statistiques et actions rapides
- Accounts : Liste, création, détails des comptes
- Transactions : Création, liste, filtres, annulation
- Profile : Informations utilisateur et déconnexion
- auth-card : Carte réutilisable pour les pages d'authentification
- digit-pad : Clavier numérique avec randomisation (sécurité)
L'application communique avec l'API REST hébergée sur :
https://coding-bank.fly.dev/api
POST /auth/register- InscriptionPOST /auth/login- ConnexionGET /auth/me- Utilisateur courantGET /auth/exists/{clientCode}- Vérification d'existence
GET /accounts- Liste des comptesPOST /accounts- Créer un compteGET /accounts/{id}- Détails d'un compteGET /accounts/{id}/transactions- Transactions d'un compte
POST /transactions- Créer une transactionGET /transactions/{id}- Détails d'une transactionPOST /transactions/{id}/cancel- Annuler une transaction
- JWT stocké dans
localStorage - Token envoyé automatiquement via interceptor HTTP
- Vérification du token côté serveur
authGuardsur toutes les routes privées- Redirection vers
/loginsi non authentifié
- Placement aléatoire des chiffres (Fisher-Yates shuffle)
- 2 emplacements vides aléatoires
- Bouton DEL pour corriger les erreurs
- Interceptor global pour les erreurs HTTP
- Messages d'erreur utilisateur-friendly
- Gestion des erreurs 401 (non autorisé)
ng generate component features/nom-du-composant --standaloneng generate service core/services/nom-du-serviceModifier src/app/app.routes.ts :
{
path: 'nouvelle-route',
component: NouveauComponent,
canActivate: [authGuard] // Si route protégée
}rm -rf node_modules package-lock.json
npm installVérifiez que l'URL de l'API est correcte dans environment.ts
Déconnectez-vous et reconnectez-vous
Ce projet a été créé dans un cadre pédagogique à la Coding Factory.
Développé avec ❤️