Aller au contenu principal

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​

  1. Ouvrir le repository principal:

Étape 2: Créer un Codespace​

  1. Cliquer sur le bouton vert Code
  2. Sélectionner l'onglet Codespaces
  3. Cliquer sur Create codespace on main
┌─────────────────────────────────────────┐
│ Code ▼ │
├─────────────────────────────────────────┤
│ Local │ Codespaces │
│ │ │
│ │ ┌──────────────────────┐ │
│ │ │ + Create codespace │ │
│ │ │ on main │ │
│ │ └──────────────────────┘ │
└─────────────────────────────────────────┘

Étape 3: Attendre l'Initialisation​

Le Codespace va:

  1. Créer une machine virtuelle
  2. Cloner le repository
  3. Installer les dépendances
  4. 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

⏭️ Prochaine Étape​

Chapitre 2: Troubleshooting →


Retour à l'index du module