Chapitre 1: Démarrage avec GitHub Codespaces
Objectifs
- Configurer un environnement de développement cloud avec GitHub Codespaces
- Lancer le projet e-contact-backend
- Comprendre la structure du projet
- Effectuer les premiers tests de l'API
🌐 Qu'est-ce que GitHub Codespaces?
GitHub Codespaces est un environnement de développement cloud qui permet de:
- Développer directement depuis le navigateur
- Avoir un environnement pré-configuré
- Éviter les problèmes d'installation locale
- Collaborer facilement
Avantage Principal
Pas besoin d'installer Java, Maven, PostgreSQL ou tout autre outil sur votre machine!
Prérequis
- Compte GitHub (gratuit)
- Navigateur web moderne
Étapes de Configuration
Étape 1: Accéder au Repository
- Ouvrir le repository principal:
Repository
Étape 2: Créer un Codespace
- Cliquer sur le bouton vert Code
- Sélectionner l'onglet Codespaces
- Cliquer sur Create codespace on main
┌─────────────────────────────────────────┐
│ Code ▼ │
├─────────────────────────────────────────┤
│ Local │ Codespaces │
│ │ │
│ │ ┌──────────────────────┐ │
│ │ │ + Create codespace │ │
│ │ │ on main │ │
│ │ └──────────────────────┘ │
└─────────────────────────────────────────┘
Étape 3: Attendre l'Initialisation
Le Codespace va:
- Créer une machine virtuelle
- Cloner le repository
- Installer les dépendances
- Ouvrir VS Code dans le navigateur
⏱️ Temps estimé: 2-3 minutes
Étape 4: Vérifier l'Environnement
Une fois le Codespace prêt, ouvrir le terminal et vérifier:
# Vérifier Java
java -version
# Attendu: openjdk 17.x.x ou supérieur
# Vérifier Maven
./mvnw -version
# Attendu: Apache Maven 3.x.x
🏃 Lancer l'Application
Commande de Démarrage
Dans le terminal du Codespace:
./mvnw spring-boot:run
Sortie Attendue
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.x)
...
Started EContactApplication in X.XXX seconds
Accéder à l'Application
Quand l'application démarre, Codespaces affiche une notification:
┌──────────────────────────────────────────────────┐
│ Your application running on port 8080 is │
│ available. │
│ │
│ [Open in Browser] [Make Public] │
└──────────────────────────────────────────────────┘
Cliquer sur Open in Browser pour accéder à l'API.
🔍 Explorer la Structure du Projet
inskillflow-docs-formation-spring-boot-projet-e-contact-backend/
│
├── 📁 src/main/java/com/example/econtact/
│ │
│ ├── 📄 EContactApplication.java # Point d'entrée
│ │
│ ├── 📁 config/
│ │ ├── SecurityConfig.java # Configuration sécurité
│ │ └── CorsConfig.java # Configuration CORS
│ │
│ ├── 📁 controller/
│ │ ├── ContactController.java # Endpoint public /api/contact
│ │ ├── AuthController.java # Endpoints authentification
│ │ └── AdminController.java # Endpoints admin protégés
│ │
│ ├── 📁 model/
│ │ ├── Lead.java # Entité Contact/Lead
│ │ ├── User.java # Entité Utilisateur
│ │ └── enums/ # RequestType, LeadStatus, Role
│ │
│ ├── 📁 dto/
│ │ ├── ContactRequest.java # DTO formulaire contact
│ │ ├── LoginRequest.java # DTO authentification
│ │ └── LeadResponse.java # DTO réponse lead
│ │
│ ├── 📁 repository/
│ │ ├── LeadRepository.java
│ │ └── UserRepository.java
│ │
│ ├── 📁 service/
│ │ ├── LeadService.java
│ │ ├── UserService.java
│ │ └── EmailService.java
│ │
│ └── 📁 security/
│ ├── JwtService.java # Génération/validation JWT
│ ├── JwtAuthenticationFilter.java # Filtre d'authentification
│ └── UserDetailsServiceImpl.java
│
├── 📁 src/main/resources/
│ └── application.yml # Configuration
│
├── 📁 frontend/ # Frontend de test
│
├── 📁 troubleshooting/ # Guides de dépannage
│
└── 📁 cours/ # Documentation et cours
Premiers Tests de l'API
Test 1: Vérifier que l'API est accessible
curl http://localhost:8080/api/health
Réponse attendue:
{"status": "UP"}
Test 2: Soumettre un Contact (Endpoint Public)
curl -X POST http://localhost:8080/api/contact \
-H "Content-Type: application/json" \
-d '{
"fullName": "Jean Dupont",
"email": "jean.dupont@example.com",
"company": "Ma Société",
"phone": "514-555-1234",
"requestType": "INFO",
"message": "Je voudrais plus d'\''informations sur vos services."
}'
Réponse attendue:
{
"id": 1,
"fullName": "Jean Dupont",
"email": "jean.dupont@example.com",
"status": "NEW",
"createdAt": "2025-02-02T12:00:00"
}
Test 3: Accéder à un Endpoint Protégé (Sans Token)
curl http://localhost:8080/api/admin/leads
Réponse attendue:
{
"status": 401,
"error": "Unauthorized"
}
⚠️ Problèmes Courants
Port 8080 déjà utilisé
# Identifier le processus
lsof -i :8080
# Ou utiliser un autre port
./mvnw spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"
Erreur de base de données
Vérifier que la configuration H2 est active pour le développement dans application.yml.
Codespace qui se déconnecte
Les Codespaces gratuits ont une limite de temps. Relancer si nécessaire.
Ressources du Troubleshooting
Pour plus de détails sur les étapes de réalisation et le dépannage:
Guides Détaillés
Checklist de Validation
Avant de passer au chapitre suivant, vérifiez que vous avez:
- Créé un Codespace avec succès
- Lancé l'application Spring Boot
- Testé l'endpoint
/api/contact - Compris la structure du projet