docker
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
.git
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
|
*.log
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
FROM node:22-alpine AS builder
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM nginx:1.27-alpine AS runner
|
||||||
|
|
||||||
|
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "5173:80"
|
||||||
|
restart: unless-stopped
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name localhost;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
location = /index.html {
|
||||||
|
add_header Cache-Control "no-cache";
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff2?)$ {
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
|
}
|
||||||
+38
-38
@@ -1,5 +1,38 @@
|
|||||||
/** Cartes projet (page Projets) : titre, compétences, visuel, texte, lien externe. */
|
/** Cartes projet (page Projets) : titre, compétences, visuel, texte, lien externe. */
|
||||||
export const PROJETS = [
|
export const PROJETS = [
|
||||||
|
{
|
||||||
|
id: 'clipautocs2',
|
||||||
|
title: 'clipAutoCS2',
|
||||||
|
skills: ['Vidéo', 'YouTube'],
|
||||||
|
imageSrc: 'https://picsum.photos/seed/billeterie/640/360',
|
||||||
|
imageAlt: 'Aperçu du projet clipAutoCS2',
|
||||||
|
description:
|
||||||
|
'Création de clips highlight pro sur CS2.\nRécupération d’un match e-sport et traitement des données.\nEnregistrement automatisé des meilleurs moments, montage vidéo, publication sur YouTube.\nProjet personnel — GitHub perso.',
|
||||||
|
link: 'https://github.com/Foufure13',
|
||||||
|
linkLabel: 'Profil GitHub',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'cryptobot',
|
||||||
|
title: 'CryptoBot',
|
||||||
|
skills: ['API', 'Dashboard', 'Crypto', 'Trading'],
|
||||||
|
imageSrc: '/images/cryptobot-preview.png',
|
||||||
|
imageAlt: 'Aperçu du projet CryptoBot',
|
||||||
|
description:
|
||||||
|
'Outil complet de gestion de comptes crypto par API.\nSite web dashboard, sécurité compte / base de données.\nRécupération des flux marché (API), aide à la décision d’investissement, trading sur portefeuille (API).\nDépôt GitHub privé.',
|
||||||
|
link: 'https://github.com/Foufure13',
|
||||||
|
linkLabel: 'Profil GitHub (dépôt privé)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'mecafollow',
|
||||||
|
title: 'mecaFollow',
|
||||||
|
skills: ['Web', 'Suivi', 'E-mail'],
|
||||||
|
imageSrc: '/images/mecafollow-preview.png',
|
||||||
|
imageAlt: 'Aperçu du projet mecaFollow',
|
||||||
|
description:
|
||||||
|
'Site web personnel ou professionnel : enregistrement et suivi d’une voiture ou autre véhicule pour faciliter le suivi des entretiens (un ou plusieurs véhicules).\nNotifications par e-mail lorsqu’une intervention est nécessaire.\nProjet personnel et professionnel — GitHub sécurisé.',
|
||||||
|
link: 'https://github.com/Foufure13',
|
||||||
|
linkLabel: 'Profil GitHub (dépôt sécurisé)',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'androidpayload',
|
id: 'androidpayload',
|
||||||
title: 'androidpayload',
|
title: 'androidpayload',
|
||||||
@@ -47,7 +80,7 @@ export const PROJETS = [
|
|||||||
{
|
{
|
||||||
id: 'twitch-bot-interactif',
|
id: 'twitch-bot-interactif',
|
||||||
title: 'Twitch Bot Interactif',
|
title: 'Twitch Bot Interactif',
|
||||||
skills: ['Twitch', 'API', 'STT', 'Bot'],
|
skills: ['Twitch', 'API', 'Bot'],
|
||||||
imageSrc: '/images/twitch-bot-preview.png',
|
imageSrc: '/images/twitch-bot-preview.png',
|
||||||
imageAlt: 'Aperçu du bot Twitch',
|
imageAlt: 'Aperçu du bot Twitch',
|
||||||
description:
|
description:
|
||||||
@@ -69,7 +102,7 @@ export const PROJETS = [
|
|||||||
{
|
{
|
||||||
id: 'realmaster',
|
id: 'realmaster',
|
||||||
title: 'RealMaster',
|
title: 'RealMaster',
|
||||||
skills: ['Web', 'Social', 'Stats'],
|
skills: ['Web', 'Stats'],
|
||||||
imageSrc: 'https://picsum.photos/seed/lkfindpost/640/360',
|
imageSrc: 'https://picsum.photos/seed/lkfindpost/640/360',
|
||||||
imageAlt: 'Aperçu du projet RealMaster',
|
imageAlt: 'Aperçu du projet RealMaster',
|
||||||
description:
|
description:
|
||||||
@@ -91,7 +124,7 @@ export const PROJETS = [
|
|||||||
{
|
{
|
||||||
id: 'airsoft-vitrine',
|
id: 'airsoft-vitrine',
|
||||||
title: 'Airsoft vitrine',
|
title: 'Airsoft vitrine',
|
||||||
skills: ['Web', 'Association', 'Vitrine'],
|
skills: ['Association', 'Vitrine'],
|
||||||
imageSrc: '/images/airsoft-vitrine-preview.png',
|
imageSrc: '/images/airsoft-vitrine-preview.png',
|
||||||
imageAlt: 'Aperçu du site Airsoft',
|
imageAlt: 'Aperçu du site Airsoft',
|
||||||
description:
|
description:
|
||||||
@@ -99,21 +132,10 @@ export const PROJETS = [
|
|||||||
link: 'https://github.com/Foufure13/Airsoft',
|
link: 'https://github.com/Foufure13/Airsoft',
|
||||||
linkLabel: 'Airsoft sur GitHub',
|
linkLabel: 'Airsoft sur GitHub',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'cryptobot',
|
|
||||||
title: 'CryptoBot',
|
|
||||||
skills: ['API', 'Dashboard', 'Crypto', 'Trading'],
|
|
||||||
imageSrc: '/images/cryptobot-preview.png',
|
|
||||||
imageAlt: 'Aperçu du projet CryptoBot',
|
|
||||||
description:
|
|
||||||
'Outil complet de gestion de comptes crypto par API.\nSite web dashboard, sécurité compte / base de données.\nRécupération des flux marché (API), aide à la décision d’investissement, trading sur portefeuille (API).\nDépôt GitHub privé.',
|
|
||||||
link: 'https://github.com/Foufure13',
|
|
||||||
linkLabel: 'Profil GitHub (dépôt privé)',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'bot-instagram',
|
id: 'bot-instagram',
|
||||||
title: 'Bot autonome Instagram',
|
title: 'Bot autonome Instagram',
|
||||||
skills: ['Social', 'IA', 'API', 'Génération'],
|
skills: ['IA', 'API', 'Génération'],
|
||||||
imageSrc: 'https://www.thispersondoesnotexist.com',
|
imageSrc: 'https://www.thispersondoesnotexist.com',
|
||||||
imageAlt: 'Aperçu du bot Instagram',
|
imageAlt: 'Aperçu du bot Instagram',
|
||||||
description:
|
description:
|
||||||
@@ -124,7 +146,7 @@ export const PROJETS = [
|
|||||||
{
|
{
|
||||||
id: 'site-partage-info',
|
id: 'site-partage-info',
|
||||||
title: 'Site web de partage d’information',
|
title: 'Site web de partage d’information',
|
||||||
skills: ['Web', 'Forum', 'Light'],
|
skills: ['Forum', 'Light'],
|
||||||
imageSrc: '/images/site-partage-preview.png',
|
imageSrc: '/images/site-partage-preview.png',
|
||||||
imageAlt: 'Aperçu du site de partage',
|
imageAlt: 'Aperçu du site de partage',
|
||||||
description:
|
description:
|
||||||
@@ -132,28 +154,6 @@ export const PROJETS = [
|
|||||||
link: 'https://github.com/Foufure13',
|
link: 'https://github.com/Foufure13',
|
||||||
linkLabel: 'Profil GitHub (dépôt privé)',
|
linkLabel: 'Profil GitHub (dépôt privé)',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'mecafollow',
|
|
||||||
title: 'mecaFollow',
|
|
||||||
skills: ['Web', 'Suivi', 'E-mail'],
|
|
||||||
imageSrc: '/images/mecafollow-preview.png',
|
|
||||||
imageAlt: 'Aperçu du projet mecaFollow',
|
|
||||||
description:
|
|
||||||
'Site web personnel ou professionnel : enregistrement et suivi d’une voiture ou autre véhicule pour faciliter le suivi des entretiens (un ou plusieurs véhicules).\nNotifications par e-mail lorsqu’une intervention est nécessaire.\nProjet personnel et professionnel — GitHub sécurisé.',
|
|
||||||
link: 'https://github.com/Foufure13',
|
|
||||||
linkLabel: 'Profil GitHub (dépôt sécurisé)',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'clipautocs2',
|
|
||||||
title: 'clipAutoCS2',
|
|
||||||
skills: ['Vidéo', 'YouTube'],
|
|
||||||
imageSrc: 'https://picsum.photos/seed/billeterie/640/360',
|
|
||||||
imageAlt: 'Aperçu du projet clipAutoCS2',
|
|
||||||
description:
|
|
||||||
'Création de clips highlight pro sur CS2.\nRécupération d’un match e-sport et traitement des données.\nEnregistrement automatisé des meilleurs moments, montage vidéo, publication sur YouTube.\nProjet personnel — GitHub perso.',
|
|
||||||
link: 'https://github.com/Foufure13',
|
|
||||||
linkLabel: 'Profil GitHub',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'wiki-documentation',
|
id: 'wiki-documentation',
|
||||||
title: 'Wiki Documentation',
|
title: 'Wiki Documentation',
|
||||||
|
|||||||
Reference in New Issue
Block a user