Skip to content

Commit 7f477e6

Browse files
authored
Merge pull request #60 from WildCodeSchool/staging
Merge staging into prod
2 parents 80e1831 + e3a165f commit 7f477e6

File tree

259 files changed

+39461
-11
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

259 files changed

+39461
-11
lines changed

.env.sample

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# variable database
2+
DB_HOST=URL_BASE_DE_DONNEES/localhost
3+
DB_DATABASE=NOM_DE_LA_DATABASE
4+
DB_USER=NOM_UTILISATEUR_DE_LA_DATABASE
5+
DB_PASSWORD=MOT_DE_PASSE_DE_LA_DATABASE
6+
7+
# variable configuration serveur
8+
SERVEUR_PORT=PORT_DU_SERVEUR
9+
JWT_SECRET=CODE_SECRET_JWT
10+
11+
# variable service images & message
12+
FRONTEND_URL=http://localhost:3000
13+
PICTURE_SERVICE_PORT=PORT_SERVICE_IMAGES
14+
MESSAGE_SERVICE_PORT=PORT_SERVICE_MESSAGES
15+
INTERNAL_SECRET_KEY=cle_code_secret_interne
16+
17+
# variable frontend
18+
FRONTEND_PORT=NUMERO_DE_PORT_DU_FRONTEND
19+
SERVEUR_URL=http://localhost:GATEWAY_PORT/api || https://URL_DU_SERVEUR/api
20+
SERVEUR_URL_DOCKER=http://backend:SERVEUR_PORT_DOCKER/graphql || https://URL_DU_SERVEUR/graphql
21+
SERVICE_MESSAGE_URL=http://localhost:3000
22+
23+
# variable gateway
24+
GATEWAY_PORT=NUMERO_DE_PORT_DU_GATEWAY
25+
26+
# variable fullstack
27+
MODE=dev || prod
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Production deployment
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
build-and-push-projects:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
include:
14+
- nom_service: frontend
15+
nom_image: ${{ vars.IMAGE_FRONTEND_PRODUCTION }}
16+
- nom_service: backend
17+
nom_image: ${{ vars.IMAGE_BACKEND_PRODUCTION }}
18+
- nom_service: gateway
19+
nom_image: ${{ vars.IMAGE_GATEWAY_PRODUCTION }}
20+
- nom_service: message-service
21+
nom_image: ${{ vars.IMAGE_MESSAGE_SERVICE_PRODUCTION }}
22+
- nom_service: picture-service
23+
nom_image: ${{ vars.IMAGE_PICTURE_SERVICE_PRODUCTION }}
24+
steps:
25+
- name: Récupérer le code source
26+
uses: actions/checkout@v4
27+
- name: Se connecter à DockerHub
28+
uses: docker/login-action@v2
29+
with:
30+
username: ${{ vars.DOCKERHUB_USERNAME }}
31+
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
32+
- name: Build et push l'image Docker
33+
uses: docker/build-push-action@v4
34+
with:
35+
context: ./${{ matrix.nom_service }}
36+
file: ./${{ matrix.nom_service }}/Dockerfile.production
37+
push: true
38+
tags: ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.nom_image }}:latest
39+
40+
serveur-deploy:
41+
needs: build-and-push-projects
42+
runs-on: ubuntu-latest
43+
steps:
44+
- name: Déployer sur le serveur distant
45+
run: curl -f ${{ vars.SERVER_WEBHOOK_PRODUCTION }}
46+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Staging deployment
2+
3+
on:
4+
push:
5+
branches:
6+
- staging
7+
8+
jobs:
9+
build-and-push-projects:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
include:
14+
- nom_service: frontend
15+
nom_image: ${{ vars.IMAGE_FRONTEND_STAGING }}
16+
- nom_service: backend
17+
nom_image: ${{ vars.IMAGE_BACKEND_STAGING }}
18+
- nom_service: gateway
19+
nom_image: ${{ vars.IMAGE_GATEWAY_STAGING }}
20+
- nom_service: message-service
21+
nom_image: ${{ vars.IMAGE_MESSAGE_SERVICE_STAGING }}
22+
- nom_service: picture-service
23+
nom_image: ${{ vars.IMAGE_PICTURE_SERVICE_STAGING }}
24+
steps:
25+
- name: Récupérer le code source
26+
uses: actions/checkout@v4
27+
- name: Se connecter à DockerHub
28+
uses: docker/login-action@v2
29+
with:
30+
username: ${{ vars.DOCKERHUB_USERNAME }}
31+
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
32+
- name: Build et push l'image Docker
33+
uses: docker/build-push-action@v4
34+
with:
35+
context: ./${{ matrix.nom_service }}
36+
file: ./${{ matrix.nom_service }}/Dockerfile.staging
37+
push: true
38+
tags: ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.nom_image }}:latest
39+
40+
serveur-deploy:
41+
needs: build-and-push-projects
42+
runs-on: ubuntu-latest
43+
steps:
44+
- name: Déployer sur le serveur distant
45+
run: curl -f ${{ vars.SERVER_WEBHOOK_STAGING }}
46+
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: tests-backend
2+
3+
on: push
4+
5+
jobs:
6+
tests-backend:
7+
runs-on: ubuntu-latest
8+
services:
9+
postgres:
10+
image: postgres
11+
env:
12+
POSTGRES_USER: test
13+
POSTGRES_PASSWORD: test
14+
POSTGRES_DB: testdb
15+
ports:
16+
- 5432:5432
17+
options: >-
18+
--health-cmd="pg_isready -U test"
19+
--health-interval=10s
20+
--health-timeout=5s
21+
--health-retries=5
22+
steps:
23+
- name: Récupère le code
24+
uses: actions/checkout@v4
25+
26+
- name: créer l'image docker
27+
run: docker build -t backend-test ./backend
28+
29+
- name: Fait les tests backend
30+
run: |
31+
docker run --rm \
32+
--network host \
33+
-e DB_HOST=localhost \
34+
-e DB_USER=test \
35+
-e DB_PASSWORD=test \
36+
-e DB_DATABASE=testdb \
37+
-e JWT_SECRET=cleJwt \
38+
-e SERVEUR_PORT=3310 \
39+
backend-test npm test
40+
41+
42+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: check-biome
2+
3+
on: push
4+
5+
jobs:
6+
check-biome:
7+
name: check-biome
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Récupère le code du dépôt
12+
uses: actions/checkout@v4
13+
14+
- name: Setup Node
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version: 22.20.0
18+
cache: "npm"
19+
20+
- name: Installe les dépendances
21+
run: npm install
22+
23+
- name: Exécute biome
24+
run: npm run husky-lint
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Test le build des services
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
branches-ignore:
7+
- main
8+
9+
jobs:
10+
build-and-push-projects:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
# pouvoir voir tout les builds qui échouent pas juste le premier
14+
fail-fast: false
15+
matrix:
16+
include:
17+
- nom_service: frontend
18+
- nom_service: backend
19+
- nom_service: gateway
20+
- nom_service: message-service
21+
- nom_service: picture-service
22+
steps:
23+
- name: Récupérer le code source
24+
uses: actions/checkout@v4
25+
26+
- name: setup Docker Buildx (pour du cache)
27+
uses: docker/setup-buildx-action@v3
28+
29+
- name: Build l'image Docker
30+
uses: docker/build-push-action@v4
31+
with:
32+
context: ./${{ matrix.nom_service }}
33+
file: ./${{ matrix.nom_service }}/Dockerfile.staging
34+
push: false
35+
load: false
36+
cache-from: type=gha
37+
cache-to: type=gha,mode=max
38+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: tests-frontend
2+
3+
on: push
4+
5+
jobs:
6+
tests-frontend:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: Cherche le code et le met sur la machine virtuelle
10+
uses: actions/checkout@v2
11+
- name: Va dans le dossier frontend, installe les dépendances et lance les tests
12+
run: cd frontend && npm i && npm test

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
.env
2+
.env.*
3+
!.env.sample
4+
**/node_modules/
5+
.DS_Store
6+
persit/
7+
database/
8+
.vscode/
9+
commandes-debug.sh
10+
11+
dist
12+
13+
# pour avoir une liste des tâche a faire qui reste en local
14+
toodo.md
15+
ingnore

.husky/pre-commit

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
npm run husky-lint
2+
3+
# si le paramètre bypass-bin est pas actif
4+
# bypass_bin=1 git commit
5+
if [ "$bypass_bin" != "1" ]; then
6+
# Bloquer toute modification du dossier bin/
7+
if git diff --cached --name-only | grep -q "^bin/"; then
8+
echo ""
9+
echo "🚫 Vous n'avez pas le droit de modifier le contenu du dossier \"bin/\""
10+
echo "Ce fichier est sensible donc vous devez étre sûr de ce que vous faites."
11+
echo ""
12+
exit 1
13+
fi
14+
fi

README.md

Lines changed: 60 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,61 @@
1-
# GifChat
1+
# GiftChat
2+
23
## Description
3-
GifChat est un site de chat en ligne qui permet de crée des groupes de disscussion pour preparer des cadeux pour une perssonne pour un évenment particulier.
4-
## Context
5-
GifChat est un projet réalisé dans le cadre de la formation CDA de la wild code school. en suivant les consignes suivantes :
6-
- Permettre aux membres d’une famille ou d’un groupe d’amis de discuter d’idées de cadeaux sans voir ce que les autres préparent pour soi.
7-
- Un fil de discussion serait consacré à chaque membre, permettant aux autres membres d’échanger des idées de cadeaux individuels ou collectifs.
8-
## Equipe
9-
- [@Evelyne](https://github.com/sonar888)
10-
- [@Chloe](https://github.com/ChloeNuage)
11-
- [@Clement](https://github.com/clement4444)
12-
-[@Wolfgang](a remplir)
4+
GiftChat est un site de chat en ligne qui permet de créer des groupes de discussion afin de préparer des cadeaux pour une personne lors d’un événement particulier.
5+
6+
## Contexte
7+
GiftChat est un projet réalisé dans le cadre de la formation **CDA** de la **Wild Code School**, en suivant les consignes suivantes :
8+
- Permettre aux membres d’une famille ou d’un groupe d’amis de discuter d’idées de cadeaux sans voir ce que les autres préparent pour eux.
9+
- Un fil de discussion est consacré à chaque membre, permettant aux autres participants d’échanger des idées de cadeaux individuels ou collectifs.
10+
11+
## Exécution
12+
Avoir **Docker** installé sur sa machine.
13+
Pour lancer le projet en local, il suffit d’exécuter, dans un terminal à la racine du projet :
14+
```bash
15+
make dev-gateway
16+
```
17+
18+
## Structure du projet
19+
```
20+
.
21+
├── .github -> workflows GitHub
22+
├── .husky -> hooks de pré-commit Husky
23+
├── backend -> API principale GraphQL
24+
├── bin -> scripts d’automatisation
25+
├── deployment -> fichiers nécessaires au déploiement sur un VPS
26+
├── frontend -> côté client (React)
27+
├── gateway -> API Gateway (point d’entrée unique lorsque le projet tourne)
28+
├── ignore -> fichier que vous pouvez créer pour ajouter du contenu non commité
29+
├── message-service -> microservice de gestion des messages
30+
├── persist -> dossier où sont stockés les volumes Docker (notamment la base de données)
31+
├── picture-service -> microservice de gestion des images
32+
├── .env.dev -> variables d’environnement pour le mode développement, à créer à partir de .env.dev.sample
33+
├── .env.dev.sample -> exemple de fichier de variables d’environnement
34+
├── .gitignore -> fichiers à ignorer par Git
35+
├── biome.json -> configuration de Biome
36+
├── biome.md -> documentation de Biome
37+
├── compose.dev.yaml -> fichier Docker Compose pour le mode développement
38+
├── makefile -> commandes Make pour automatiser des tâches
39+
├── makefile.md -> documentation des commandes Make
40+
├── package-lock.json -> fichier de verrouillage des dépendances npm
41+
├── package.json -> gestion des dépendances npm
42+
└── README.md -> ce fichier
43+
```
44+
45+
## Commandes utiles
46+
47+
Nous avons des commandes npm pour faciliter la gestion des dépendances npm en local (utiles pour autocompresstion des extenstions vsCode vu que le projet tourne avec docker c'est pas obligatoire de les utiliser) :
48+
- npm run nm:install : fait un npm install dans tous les dossiers de service du projet - npm run nm:clean : supprime les dossiers node_modules dans tous les dossiers de service du projet
49+
- npm run nm:reset : supprime puis réinstalle les dépendances npm dans tous les dossiers de service du projet
50+
51+
***ps: nm = node modules***
52+
53+
## Equipe
54+
- [@Evelyne](https://github.com/sonar888)
55+
- [@Chloe](https://github.com/ChloeNuage)
56+
- [@Clement](https://github.com/clement4444)
57+
- [@Wolfgang](https://github.com/wktatschl)
58+
59+
60+
61+
date de modification du README.md: 07/01/2026

0 commit comments

Comments
 (0)