FlexFi est une plateforme financière décentralisée qui connecte la finance traditionnelle à la blockchain Solana, permettant aux utilisateurs de gérer leurs actifs crypto, de passer le KYC et d'obtenir des cartes de paiement virtuelles.
- Authentification multi-méthode - Email/mot de passe et OAuth (Google, Apple, Twitter)
- Gestion de portefeuilles Solana - Création et connexion de wallets avec sécurité avancée
- Vérification KYC - Processus complet de Know Your Customer
- Cartes virtuelles - Cartes de paiement avec différents niveaux et limites
- Délégation de tokens - Permet à FlexFi d'effectuer des transactions pour l'utilisateur
- Sécurité avancée - Chiffrement AES-256-GCM, protection JWT, validation d'entrées
- Node.js v16+
- MongoDB
- Compte Solana (pour les fonctionnalités de blockchain)
-
Cloner le dépôt
git clone https://github.com/votre-username/flexfi-backend.git cd flexfi-backend
-
Installer les dépendances
npm install
-
Configurer les variables d'environnement
cp .env.example .env # Modifier le fichier .env avec vos propres configurations
-
Lancer le serveur de développement
npm run dev
/flexfi-backend
├── /src # Code source principal
│ ├── /config # Configuration
│ ├── /controllers # Contrôleurs HTTP
│ ├── /middlewares # Middlewares Express
│ ├── /models # Modèles de données Mongoose
│ ├── /routes # Routes API
│ ├── /services # Logique métier
│ ├── /tests # Tests
│ ├── /types # Types et interfaces TypeScript
│ ├── /utils # Utilitaires
│ ├── /validations # Schémas de validation
│ ├── app.ts # Configuration de l'application Express
│ └── index.ts # Point d'entrée principal
└── ...
Pour exécuter ce projet, vous devez configurer les variables d'environnement suivantes dans votre fichier .env
:
# Server
PORT=3000
NODE_ENV=development
# MongoDB
MONGODB_URI=votre_uri_mongodb
# JWT
JWT_SECRET=votre_jwt_secret_key
JWT_EXPIRES_IN=7d
# Encryption
ENCRYPTION_KEY=votre_cle_de_32_caracteres_min
# Solana
SOLANA_RPC_URL=https://api.devnet.solana.com
SOLANA_NETWORK=devnet
FLEXFI_DELEGATE_PUBKEY=votre_cle_publique_delegue
FLEXFI_DELEGATE_PRIVATE_KEY=votre_cle_privee_delegue
# OAuth (optionnels pour le développement)
GOOGLE_CLIENT_ID=votre_client_id
GOOGLE_CLIENT_SECRET=votre_client_secret
GOOGLE_CALLBACK_URL=http://localhost:3000/api/auth/google/callback
APPLE_CLIENT_ID=votre_client_id
APPLE_TEAM_ID=votre_team_id
APPLE_KEY_ID=votre_key_id
APPLE_PRIVATE_KEY_LOCATION=chemin_vers_votre_cle
APPLE_CALLBACK_URL=http://localhost:3000/api/auth/apple/callback
TWITTER_CONSUMER_KEY=votre_consumer_key
TWITTER_CONSUMER_SECRET=votre_consumer_secret
TWITTER_CALLBACK_URL=http://localhost:3000/api/auth/twitter/callback
POST /api/auth/register
- Inscription avec email/mot de passePOST /api/auth/login
- Connexion avec email/mot de passeGET /api/auth/google
- Authentification GoogleGET /api/auth/apple
- Authentification AppleGET /api/auth/twitter
- Authentification TwitterGET /api/auth/me
- Récupérer l'utilisateur actuel
POST /api/wallet/create
- Créer un nouveau walletPOST /api/wallet/connect
- Connecter un wallet existantGET /api/wallet
- Récupérer les wallets de l'utilisateurGET /api/wallet/verification-message
- Générer un message de vérificationPOST /api/wallet/delegate/instruction
- Créer une instruction de délégationPOST /api/wallet/delegate/update-status
- Mettre à jour le statut de délégation
POST /api/kyc/submit
- Soumettre une demande KYCGET /api/kyc/status
- Récupérer le statut KYC
POST /api/card/select
- Sélectionner un type de carteGET /api/card
- Récupérer la carte de l'utilisateurPOST /api/card/:cardId/activate
- Activer une cartePOST /api/card/:cardId/block
- Bloquer une carte
Pour exécuter les tests :
# Exécuter tous les tests
npm test
# Exécuter les tests unitaires
npm run test:unit
# Exécuter les tests d'intégration
npm run test:integration
# Vérifier la couverture des tests
npm run test:coverage
npm run dev
- Lancer le serveur de développement avec hot-reloadnpm run build
- Compiler le TypeScript en JavaScriptnpm start
- Démarrer l'application en mode productionnpm test
- Exécuter les testsnpm run lint
- Linter le codenpm run format
- Formater le code
Cette application implémente plusieurs mesures de sécurité :
- Chiffrement des clés privées - Les clés privées sont chiffrées avec AES-256-GCM
- JWT sécurisés - Authentification via JSON Web Tokens
- CORS - Protection contre les requêtes cross-origin
- Helmet - Protection contre les vulnérabilités web courantes
- Validation d'entrée - Tous les inputs sont validés avant traitement