Application Web Démo TCH099

Ce dépôt sera utilisé comme application web PHP démo à déployer sur le cloud Azure.

Épopée : Gestion des comptes et des profils utilisateurs

En tant qu'utilisateur, je veux créer un compte sur la plateforme pour pouvoir accéder aux fonctionnalités.

Sous-tâches :

En tant qu'utilisateur, je veux me connecter à mon compte pour pouvoir accéder à mon profil et aux autres fonctionnalités.

Sous-tâches :

En tant qu'utilisateur, je veux me déconnecter de mon compte pour sécuriser ma session.

Sous-tâches :

En tant qu'utilisateur, je veux voir un message "Hello World" avec mon nom.

Sous-tâches :

En tant qu'utilisateur, je veux voir une image aléatoire affichée sur la page.

Sous-tâches :

En tant qu'utilisateur, je veux voir les détails de mon profil tels que le nom d'utilisateur et l'adresse e-mail.

Sous-tâches :

En tant qu'administrateur, je veux me connecter à mon compte pour accéder aux fonctionnalités d'administration telles que la visualisation de tous les clients.

Sous-tâches :

/
├── api/                        # Dossier contenant les scripts de points de terminaison API
│   ├── hello-world.php         # Point de terminaison API pour les messages Hello World
│   ├── login.php               # Point de terminaison API pour la connexion utilisateur
│   ├── logout.php              # Point de terminaison API pour la déconnexion utilisateur
│   ├── randomimage.php         # Point de terminaison API pour obtenir une image aléatoire
│   ├── signup.php              # Point de terminaison API pour l'inscription utilisateur
│   ├── user_details.php        # Point de terminaison API pour récupérer les détails de l'utilisateur
│   └── clients.php             # Point de terminaison API pour récupérer tous les clients
├── db/                         # Dossier contenant les scripts SQL pour la configuration de la base de données
│   ├── 1create.sql             # Script SQL pour créer les tables de la base de données
│   ├── 2contraines.sql         # Script SQL pour ajouter des contraintes
│   ├── 3insert.sql             # Script SQL pour insérer les données initiales dans les tables de la base de données
│   └── db.py                   # Script Python pour créer, modifier et insérer les données initiales dans les tables de la base de données
├── frontend/                   # Dossier contenant les actifs et les pages frontend
│   ├── css/                    # Dossier contenant les fichiers CSS
│   │   └── styles.css          # Feuille de style principale pour le frontend
│   ├── images/                 # Dossier pour stocker les actifs d'image
│   ├── js/                     # Dossier contenant les fichiers JavaScript
│   │   └── script.js           # Fichier JavaScript principal pour le frontend
│   └── pages/                  # Dossier contenant les pages HTML
│       ├── hello-world.html    # Page HTML pour la fonctionnalité Hello World
│       ├── index.html          # Page HTML pour la page d'accueil
│       ├── admin.html          # Page HTML qui voit tous les clients
│       ├── login.html          # Page HTML pour le formulaire de connexion
│       ├── random-image.html   # Page HTML pour afficher une image aléatoire
│       ├── signup.html         # Page HTML pour le formulaire d'inscription
│       └── 404.html            # Page HTML pour les erreurs 404 Not Found
├── config.php                  # Fichier de configuration principal pour le projet
├── router.php                  # Fichier de routage principal pour la gestion du routage URL
├── routes.php                  # Fichier définissant les routes pour l'application
├── Dockerfile                  # Dockerfile pour construire l'image docker
├── docker-compose.yml          # Fichier de configuration Docker Compose pour configurer l'environnement de développement
├── nginx.conf                  # Configuration nginx pour le déploiement Azure

Créez un fichier .env à la racine de votre projet avec le contenu suivant :

DB_HOST=tch099-db
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=mydatabase
MYSQL_USER=user
MYSQL_PASSWORD=password

Exécutez les commandes suivantes pour initialiser la base de données :


cd db
python3 -m pip install mysql-connector-python python-dotenv
python3 db.py

Authentification utilisateur

Point de terminaison : /api/login.php

Méthode : POST

Corps de la requête :

{
  "username": "exemple",
  "password": "motdepasse"
}

Réponse :

{
  "status": "success",
  "message": "Connexion réussie"
}

Diagramme de séquence de connexion

Point de terminaison : /api/signup.php

Méthode : POST

Corps de la requête :

{
  "username": "exemple",
  "password": "motdepasse",
  "email": "exemple@exemple.com",
  "role": "utilisateur"
}

Réponse :

{
  "status": "success",
  "message": "Inscription réussie"
}

Diagramme de séquence d'inscription

Point de terminaison : /api/logout.php

Méthode : POST

Réponse :

{
  "status": "success",
  "message": "Déconnexion réussie"
}

Déconnexion

Point de terminaison : /api/user_details.php

Méthode : GET

Réponse :

{
  "status": "success",
  "data": {
    "username": "exemple",
    "email": "exemple@exemple.com",
    "role": "utilisateur"
  }
}

Détails de l'utilisateur

Admin

Admin

Hello World

Point de terminaison : /api/hello-world/$langue

Méthode : GET ou POST

Paramètres de requête :

Réponse :

{
  "nom": "Doe",
  "prenom": "John",
  "langue": "fr",
  "message": "Bonjour le monde John Doe!"
}

Hello World

Image aléatoire

Point de terminaison : /api/random-image

Méthode : GET

Réponse : Une URL d'image aléatoire.

Image aléatoire

DevTools

Introduction

Les DevTools sont un ensemble d'outils intégrés dans les navigateurs web pour aider les développeurs à inspecter, déboguer et analyser les pages web.

Source 1 : https://www.markup.io/blog/chrome-developer-tools/#:~:text=Well%2C%20with%20'Design%20Mode%2C,on%2C%E2%80%9D%20and%20hit%20enter.

Sommaire

Fonctionnalités Principales

- Inspecter les éléments : Cliquez avec le bouton droit sur un élément de la page et sélectionnez "Inspecter".

- Modifier le HTML : Double-cliquez sur un élément HTML pour le modifier.

- Modifier le CSS : Modifiez les styles directement dans le panneau de style.

Elements

Elements CSS

Fonctionnalités Principales

- Journalisation : Utilisez console.log() pour afficher des messages.

- Exécution de JavaScript : Tapez du code JavaScript et appuyez sur Entrée pour l'exécuter.

- Messages d'erreur : Les erreurs JavaScript apparaissent automatiquement ici.

Console

Fonctionnalités Principales

- Déboguer le code : Ajoutez des points d'arrêt et parcourez le code ligne par ligne.

- Éditeur de fichiers : Modifiez le JavaScript directement dans l'onglet.

Sources

Fonctionnalités Principales

- Suivi des requêtes : Visualisez les requêtes HTTP et les réponses.

- Analyse de la performance : Identifiez les requêtes lentes ou échouées.

Network

Network Performance

Fonctionnalités Principales

- Enregistrement de la performance : Capturez et analysez les performances de la page.

- Analyse des animations : Identifiez les problèmes de performance avec les animations.

Performance

Performance Animations

Fonctionnalités Principales

- Profils de mémoire : Capturez des instantanés de la mémoire pour analyse.

- Détection des fuites : Identifiez les objets qui ne sont pas libérés correctement.

Fonctionnalités Principales

- Gestion du stockage : Visualisez et modifiez le LocalStorage, le SessionStorage, et les cookies.

- Service Workers : Gérez les service workers enregistrés sur votre site.

Application

Fonctionnalités Principales

- Certificats SSL : Vérifiez les informations sur les certificats SSL.

- Sécurité des ressources : Assurez-vous que les ressources sont chargées de manière sécurisée.

Security

Raccourcis Clavier Utiles

Action Raccourci
Ouvrir/Fermer les DevTools Ctrl + Shift + I
Basculer le mode responsive Ctrl + Shift + M
Recharger sans le cache Ctrl + Shift + R
Ouvrir l'onglet Elements Ctrl + Shift + C
Ouvrir l'onglet Console Ctrl + Shift + J
Ouvrir l'onglet Network Ctrl + Shift + E

Conclusion

Les DevTools sont des outils puissants pour tout développeur web. Apprendre à les utiliser efficacement peut considérablement améliorer votre flux de travail et la qualité de vos projets.

Commencer

Ces instructions vous aideront à configurer et à exécuter le projet sur votre machine locale pour le développement et les tests.

Sources :

Prérequis

Installation

  1. Ouvrez le projet dans Android Studio.
  2. Construisez le projet pour télécharger les dépendances.
  3. Configurez les URL de l'API dans build.gradle :
buildConfigField("String", "API_BASE_URL", "\"https://10.0.2.2:8001/\"")
buildConfigField("String", "LOGIN_API_URL", "\"https://10.0.2.2:8001/api/login\"")
buildConfigField("String", "SIGNUP_API_URL", "\"https://10.0.2.2:8001/api/signup\"")
buildConfigField("String", "USER_DETAILS_API_URL", "\"https://10.0.2.2:8001/api/user-details\"")

Fichiers de mise en page

Définir les éléments UI pour les activités.

Ajouter des icons

À propos de 10.0.2.2

L'adresse IP 10.0.2.2 est une adresse IP spéciale utilisée pour accéder à la machine hôte depuis un émulateur Android. Lorsque vous développez et testez des applications Android avec un émulateur, 10.0.2.2 vous permet de rediriger les requêtes réseau vers votre machine locale, facilitant ainsi les tests d'API locales sans avoir besoin d'un serveur distant.

Fichiers de configuration

AndroidManifest.xml

Permission
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
Activity
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".LoginActivity" android:exported="true">
</activity>
<activity android:name=".SignupActivity" android:exported="true">
</activity>
<activity android:name=".UserDetailsActivity" android:exported="true">
</activity>

Astuces pour le développement Android

Emulator Issue

Pour les laptop un peu plus vieux, utilisez ce tutoriel :

Diagramme de déploiement

Diagramme de déploiement

Source 1 : https://learn.microsoft.com/en-us/azure/app-service/quickstart-php?tabs=cli&pivots=platform-linux

Source 2 : https://learn.microsoft.com/en-us/azure/app-service/configure-language-php?pivots=platform-linux

1. Créer un service d'application web et une base de données

Créer un service d'application web et une base de données

2. Choisir MySQL et PHP

Choisir MySQL et PHP

3. Centre de déploiement pour créer la CI/CD

Centre de déploiement

4. Ajouter une commande de démarrage

# mettre cette ligne dans la commande de démarrage
cp /home/site/wwwroot/nginx.conf /etc/nginx/sites-available/default && service nginx reload

Commande de démarrage

5. Vérifier les variables d'environnement

Variables d'environnement

6. SSH dans le conteneur

SSH

7. Créer un fichier .ENV avec les bonnes variables en fonction de l'environnement Azure

DB_HOST=tch099-db
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=mydatabase
MYSQL_USER=user
MYSQL_PASSWORD=password

.ENV File