all repos — slides @ ed0e0f08b83cf278601cbd190e474107275fc2a7

Reveal-md slides I made for various occasions

Adapt TP React
Tim Izzo tim@octree.ch
Tue, 18 Jun 2024 17:29:50 +0200
commit

ed0e0f08b83cf278601cbd190e474107275fc2a7

parent

c851f62dc110cec0c7ed151d1192fceb3c04952e

2 files changed, 28 insertions(+), 25 deletions(-)

jump to
M crea/react/GraphQL.mdcrea/react/GraphQL.md

@@ -135,7 +135,6 @@

```bash npm install @apollo/client graphql ``` - 2. Création du client ```typescript

@@ -146,14 +145,12 @@ uri: "https://rickandmortyapi.com/graphql",

cache: new InMemoryCache(), }); ``` - 3. Mise à disposition du client pour React ```typescript <ApolloProvider client={client}> <App /> </ApolloProvider>, ``` - --- ## Utilisation

@@ -261,7 +258,7 @@

## GraphQL codegen Avec [codegen](https://the-guild.dev/graphql/codegen), on peut écrire l'ensemble -de notre queries et mutations dans des fichiers _.gql_ et lancer un petit +de nos queries et mutations dans des fichiers _.gql_ et lancer un petit script qui nous génère des hooks pratiques. ---
M crea/react/TP React.mdcrea/react/TP React.md

@@ -15,8 +15,7 @@ ---

# Objectif du TP -Développer un service de chat simpliste -en utilisant NextJS. +Développer un réseau social très simpliste ---

@@ -24,7 +23,7 @@ # Fonctionnalités demandées

- **[Login]** Je peux me connecter sur l'app en entrant mon nom d'utilisateur et mot de passe défini au niveau de Strapi. - **[Profil]** Je peux voir et modifier mon profil (nom, prénom, email) -- **[Publication]** Je peux voir les publications de tout le monde et peux écrire des messages en mon nom (feed public). +- **[Publication]** Je peux voir les postes de tout le monde et peux écrire des messages en mon nom (feed public). - **[Chat]** Je peux envoyer et recevoir des messages de chat par MQTT - **[SignUp]** Je peux me créer un compte sur l'app. Un utilisateur est crée au niveau de Strapi.

@@ -47,7 +46,8 @@

- Méthode de styling - Utilisation de Typescript - Utilisation de GraphQL plutôt qu'API REST -- **SSR/SSG** (Pages router) ou **Server Components** (App router) +- Base NextJS ou ViteJS +- Si NextJS, **SSR/SSG** (Pages router) ou **Server Components** (App router) ---

@@ -56,7 +56,7 @@

Pour développer cette app, vous aurez donc besoin des pages suivantes: - Page de login -- Page "feed" pour voir la liste des publications + formulaire pour poster une publication +- Page "feed" pour voir la liste des postes + formulaire pour poster un nouveau poste - Page "profil" pour voir et éditer son profil - Page chat

@@ -71,9 +71,9 @@

- **SignUp**: 0.5pt - **Login**: 1.25pt - **Profil**: 1pt -- **Publication**: 1.5pt -- **Chat**: 0.5pt +- **Poste**: 1.5pt - **Gestion des styles**: 0.5pt +- **Chat**: 0.5pt > Pas besoin de tout faire pour avoir 6. > Il est donc possible, par exemple, de faire l'impasse sur le SignUp et le Chat et

@@ -100,10 +100,8 @@ ---

# Gestion de l'authentification -Attention à ne pas négliger la gestion de l'authentification (login). - Il faut trouver un moyen de stocker le token JWT fourni par -Strapi dans le navigateur et le fournir à chaque requête vers le backend. +Strapi dans le navigateur (`localStorage`) et le fournir à chaque requête vers le backend. - [Doc de Strapi pour le login](https://docs.strapi.io/dev-docs/plugins/users-permissions#login) - [Doc de Strapi pour le signup](https://docs.strapi.io/dev-docs/plugins/users-permissions#registration)

@@ -137,9 +135,26 @@ - [Documentation de l'API GraphQL](https://docs.strapi.io/dev-docs/api/graphql)

--- +Exemple `curl` pour envoyer une requête de création de poste à l'API: + +```bash +curl 'http://localhost:1337/api/posts' \ +-X POST \ +--header 'Authorization: Bearer <TOKEN RÉCUPÉRÉ>' \ +--data '{ + "data": { + "title": "Titre du premier poste", + "content": "Bienvenue sur mon feed" + } +}' +``` + + +--- + # Communiquer avec MQTT -Vous pouvez utiliser mon hook [`useTopic`](https://www.npmjs.com/package/usetopic) tout prêt à l'emploi (il faut l'installer avant): +Vous pouvez utiliser le hook [`useTopic`](https://www.npmjs.com/package/usetopic) tout prêt à l'emploi (il faut l'installer avant): ```typescript import { useState } from "react";

@@ -223,13 +238,4 @@ Pendant la journée, je répondrais uniquement aux questions pour clarifier

l'énoncé mais pas sur "comment faire le taf". Je suis également à dispo s'il y a des blocages quant à l'utilisation -des deux serveurs (Strapi et broker MQTT). - ---- - -# Mise en place pour Tim - -- [ ] Créer un Strapi -- [ ] Installer les plugins GraphQL et Swagger -- [ ] Créer le modèle "Publication" -- [ ] Créer les comptes utilisateur +des deux serveurs (Strapi et broker MQTT).