Compare commits

...

110 Commits

Author SHA1 Message Date
df42311429 Actualiser .woodpecker/maintenance.yaml
Some checks failed
ci/woodpecker/push/workflow Pipeline was successful
ci/woodpecker/cron/maintenance Pipeline failed
2025-05-21 16:21:37 +02:00
90008a1fef Actualiser .woodpecker/maintenance.yaml 2025-05-21 16:19:48 +02:00
7ce2783bf2 ci: update browserlist
Some checks failed
ci/woodpecker/push/workflow Pipeline failed
2025-05-21 16:19:38 +02:00
ae8c57a888 feat: update dates
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
2025-05-21 16:01:33 +02:00
1c8f370c61 fix: ionicons
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
2025-05-10 14:24:23 +02:00
afe3c0bed6 fix: update icons
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
2025-05-10 14:16:04 +02:00
b7a4a0c99a feat: messages
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
2025-05-10 14:08:58 +02:00
fce5e2abfe ci: woodpecker
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
2025-05-10 14:02:18 +02:00
d439c6f030 ci: woodpecker
Some checks failed
ci/woodpecker/push/workflow Pipeline failed
2025-05-10 14:00:10 +02:00
a5a368fd31 ci: woodpecker 2025-05-10 13:57:25 +02:00
c9b071cd8d ci: woodpecker
All checks were successful
ci/woodpecker/manual/workflow Pipeline was successful
2025-05-10 13:48:28 +02:00
58d74e76bb backblaze to scaleway 2025-04-23 19:26:33 +02:00
81045f6d31 Actualiser Dockerfile 2025-03-25 17:31:39 +01:00
b967bb134e Actualiser src/messages/fr.json 2025-03-25 17:01:14 +01:00
d184317982 Actualiser src/messages/en.json 2025-03-18 11:19:11 +01:00
e2a3ecb1d7 Actualiser src/messages/fr.json 2025-03-18 11:14:12 +01:00
d45ac2aa06 Actualiser src/messages/fr.json 2025-02-19 14:33:10 +01:00
49ba9e4d5d Actualiser src/messages/fr.json 2025-02-19 14:02:36 +01:00
e06b3aa65b Actualiser src/messages/fr.json 2025-02-19 14:01:37 +01:00
7e2447415f Actualiser INSTRUCTIONS.md 2025-02-19 13:34:02 +01:00
655e87fa52 Actualiser README.md 2025-02-19 13:31:26 +01:00
79f42686de Actualiser src/messages/fr.json 2025-02-19 12:21:22 +01:00
585223d18e Supprimer .github/workflows/act.yml 2025-02-19 12:18:09 +01:00
69044e7077 Actualiser src/messages/fr.json
Some checks failed
/ Test CV Web Dumas (push) Successful in 26s
/ Deploy app to the Multirisque main setup (push) Has been cancelled
2025-02-19 12:05:18 +01:00
ed2ccdfc3e Actualiser .github/workflows/act.yml
Some checks failed
/ Test CV Web Dumas (push) Successful in 34s
/ Deploy app to the Multirisque main setup (push) Has been cancelled
2025-02-17 16:51:09 +01:00
d5fa6c6900 Actualiser .github/workflows/act.yml 2025-02-17 16:47:49 +01:00
8948ec3f23 Actualiser README.md
Some checks failed
/ Test CV Web Dumas (push) Failing after 31s
/ Deploy app to the Multirisque main setup (push) Has been cancelled
2025-02-17 16:10:14 +01:00
dependabot[bot]
732991213c
Bump nanoid from 3.3.7 to 3.3.8 (#80)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-17 13:57:26 +01:00
dependabot[bot]
806f75a5af
Bump cookie and express (#77)
Bumps [cookie](https://github.com/jshttp/cookie) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `cookie` from 0.6.0 to 0.7.1
- [Release notes](https://github.com/jshttp/cookie/releases)
- [Commits](https://github.com/jshttp/cookie/compare/v0.6.0...v0.7.1)

Updates `express` from 4.21.0 to 4.21.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.1)

---
updated-dependencies:
- dependency-name: cookie
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 09:22:09 +01:00
dependabot[bot]
a388e7952b
Bump rollup from 2.79.1 to 2.79.2 (#76)
Bumps [rollup](https://github.com/rollup/rollup) from 2.79.1 to 2.79.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.79.1...v2.79.2)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 09:21:45 +01:00
dependabot[bot]
39cea7859e
Bump cross-spawn from 7.0.3 to 7.0.6 (#79)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 09:21:26 +01:00
21da07eb4c fix readme 2024-11-06 11:21:01 +00:00
dependabot[bot]
6fb0f69f6f
Bump http-proxy-middleware from 2.0.6 to 2.0.7 (#78)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 14:41:52 +02:00
a5a6476557
Update en.json 2024-09-24 13:04:27 +02:00
c86a601800
feat : remove telegram add signal 2024-09-24 12:29:22 +02:00
6372c1a512
feat : add signal remove telegram 2024-09-24 12:18:15 +02:00
dependabot[bot]
6a84ebd8a7
Bump micromatch from 4.0.5 to 4.0.8 (#74) 2024-09-17 14:56:36 +02:00
dependabot[bot]
26a91bbedd
Bump webpack from 5.93.0 to 5.94.0 (#73) 2024-09-17 14:56:13 +02:00
dependabot[bot]
bfce14f3f5
Bump serve-static and express (#75) 2024-09-17 14:55:20 +02:00
04069faa62
feat: change title 2024-08-03 01:04:40 +02:00
ee7711083b fix: npm audit fix 2024-07-30 14:17:33 +02:00
dependabot[bot]
96b1e28d8e
Bump braces from 3.0.2 to 3.0.3 (#72)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-30 14:06:21 +02:00
af872f75fd
Update robots.txt (#71) 2024-05-29 16:18:52 +02:00
c0468654cd feat: add referer to blog link 2024-05-21 10:27:27 +00:00
0afb2402ab feat: update headshot 2024-05-04 19:17:59 +02:00
dependabot[bot]
c8e63e28d6
Bump ejs from 3.1.9 to 3.1.10 (#70) 2024-05-02 12:15:49 +02:00
1cd5741a2d feat: be clearer about the situation of where i was for the subcontractor work 2024-04-30 00:18:13 +02:00
cb4c54bd3f feat: better css for the subcontractor thing 2024-04-30 00:15:46 +02:00
e86964980e feat: add subcontractor work 2024-04-30 00:05:31 +02:00
dependabot[bot]
e46cf3f5a6
Bump express from 4.18.2 to 4.19.2 (#67)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-20 18:45:45 +02:00
dependabot[bot]
ced5a64e2b
Bump webpack-dev-middleware from 5.3.3 to 5.3.4 (#66)
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anthony Dumas <anthony@dumas.cc>
2024-04-20 18:45:35 +02:00
008fc40adb
Update CODEOWNERS 2024-04-20 18:44:23 +02:00
e8dddc7103
Create CODEOWNERS 2024-04-20 18:43:42 +02:00
54cadc072f
use: bulma v1 (#69)
* trying: pass the bulma breaking changes

* fix: bulma 1.0

* fix: some ui bullshits happened after bulma v1
2024-04-20 18:27:40 +02:00
c6a239608f feat: add subcontractor duties for Sopra 2024-04-16 08:48:14 +00:00
dependabot[bot]
b530f196c6
Bump follow-redirects from 1.15.5 to 1.15.6 (#65) 2024-03-17 10:00:45 +01:00
3596338dfb fix: description 2024-03-13 10:27:49 +00:00
eebb5ed6b5 feat: add powered by scaleway 2024-02-12 22:42:10 +01:00
d7a9029a42 feat: links should look like link 2024-02-12 22:18:47 +01:00
6db8878b3d feat: add blog link 2024-02-12 22:04:15 +01:00
45b3b37d89 feat: fixing education 2024-02-12 21:57:20 +01:00
dependabot[bot]
4fa78d504f
Bump @adobe/css-tools from 4.2.0 to 4.3.2 (#63)
Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.2.0 to 4.3.2.
- [Changelog](https://github.com/adobe/css-tools/blob/main/History.md)
- [Commits](https://github.com/adobe/css-tools/commits)

---
updated-dependencies:
- dependency-name: "@adobe/css-tools"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anthony Dumas <anthony@dumas.cc>
2024-01-30 13:40:50 +01:00
dependabot[bot]
3b4571902b
Bump follow-redirects from 1.15.2 to 1.15.5 (#64)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.5.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.5)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-30 13:35:19 +01:00
dependabot[bot]
e1929dd46b
Bump @adobe/css-tools from 4.2.0 to 4.3.1 (#60)
Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.2.0 to 4.3.1.
- [Changelog](https://github.com/adobe/css-tools/blob/main/History.md)
- [Commits](https://github.com/adobe/css-tools/commits)

---
updated-dependencies:
- dependency-name: "@adobe/css-tools"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-23 13:32:44 +01:00
dependabot[bot]
a441986786
Bump @babel/traverse from 7.21.2 to 7.23.2 (#61)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-23 13:32:30 +01:00
e00c967274
New Year New Me (2/2) 2024-01-01 13:54:28 +01:00
d7c9d8994e
New Year New Me (1/2) 2024-01-01 13:54:10 +01:00
806d63a4fd update: tags 2023-12-12 15:11:04 +01:00
27828625b1
Create robots.txt 2023-11-22 14:44:12 +01:00
e1f4433705 fix: updating bullet points 2023-11-21 22:41:00 +01:00
7bf65448d7 feat: add tags for job @ Sopra 2023-11-04 16:07:07 +01:00
28151c4e2d
Update test.yml 2023-11-04 15:11:27 +01:00
d4b99aae41
feat: update github workflow 2023-11-04 15:09:17 +01:00
18ea7f0938 fix: url mastodon 2023-11-01 23:08:45 +01:00
1148353c9c Merge branch 'test' 2023-11-01 22:58:10 +01:00
b3969ddad3 feat: Update Link to CV 2023-11-01 21:55:07 +00:00
824946e6a0 test 2023-10-25 22:01:27 +02:00
Adamas
290ad1d3a9 add docker compose 2023-10-25 21:55:07 +02:00
Adamas
a689047c23 Docker things 2023-10-22 22:23:42 +02:00
1764a3439b
feat : make entreprise bolder
Update ExperienceCard.js
2023-10-19 12:16:10 +02:00
2afd9f05c4 Correction sur le titre du poste chez Sopra Steria 2023-08-08 14:05:07 +00:00
62fcdd55c7 MaJ wording Tags Experience 2023-08-02 14:13:49 +00:00
dependabot[bot]
f1cdd79565
Bump word-wrap from 1.2.3 to 1.2.4 (#59)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-25 09:46:50 +02:00
dependabot[bot]
f1607a74f4
Bump semver from 6.3.0 to 6.3.1 (#58)
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-25 09:46:41 +02:00
dependabot[bot]
4213859932
Bump tough-cookie from 4.1.2 to 4.1.3 (#57)
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-18 09:37:51 +02:00
999476cdd5
fix mastodon verification (#56)
* Update index.html

* Update fr.json

* Update en.json
2023-07-07 14:37:08 +02:00
32486235f0
Update README.md
add Senior Software Engineer
2023-06-29 11:47:24 +02:00
63659cdc02
Update en.json
add Senior Software Engineer
2023-06-29 11:47:04 +02:00
6254856b6b
Update fr.json
add "Senior Software Engineer"
2023-06-29 11:46:47 +02:00
5b1564beb6
Update README.md 2023-06-26 19:55:28 +02:00
fecefb843b
New Job :party: (#55)
* New Job :party:

* Fix du test
+ petits fixes React
+ fix La Clameur
2023-06-26 19:54:54 +02:00
543fe1cb94 Mise à jour dates Harvest 2023-04-27 15:00:11 +00:00
b4868009ad npm audit 2023-04-09 20:41:52 +02:00
58935df630 Prettier thinks it's better, I guess 2023-04-09 20:31:37 +02:00
193aea1587
Merge pull request #54 from AdamasFR/dependabot/npm_and_yarn/webpack-5.76.3
Bump webpack from 5.75.0 to 5.76.3
2023-03-28 11:40:04 +02:00
86c0df290d
Update App.test.js 2023-03-27 23:26:27 +02:00
dependabot[bot]
494736140d
Bump webpack from 5.75.0 to 5.76.3
Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.76.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.3)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 21:24:42 +00:00
c41d1835aa
Update test.yml 2023-03-27 23:24:21 +02:00
8160e1b6ac
Create test.yml 2023-03-27 23:23:17 +02:00
b44f29bfbf Better glitching 2023-03-10 09:53:39 +00:00
8b1c7d0d3f Release 2023.1.001 2023-03-04 13:11:50 +01:00
41295484a7 Ajout de la Clameur dans mes expériences 2023-03-04 13:11:24 +01:00
0486904e88 2023.1.001-SNAPSHOT : Quick Upgrade 2023-03-04 13:02:18 +01:00
c36c00a344 Ajout de Powerline (c'est rigolo) 2023-02-24 09:54:42 +00:00
2428e40904 Mise à jour README 2023-01-20 10:12:51 +00:00
82b7281125 Passage en Node 18 + correction import react 2023-01-20 09:33:32 +00:00
Anthony DUMAS
b4d5a92117 merge 2023-01-20 10:19:07 +01:00
Anthony DUMAS
3f047ffbbf Suppression temporaire du package lock 2023-01-20 10:17:40 +01:00
8e0ff70d47
Merge pull request #53 from AdamasFR/dependabot/npm_and_yarn/json5-1.0.2
Bump json5 from 1.0.1 to 1.0.2
2023-01-12 20:12:37 +01:00
dependabot[bot]
ab3871f032
Bump json5 from 1.0.1 to 1.0.2
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 22:26:13 +00:00
42 changed files with 15874 additions and 14101 deletions

View File

@ -0,0 +1,19 @@
when:
- event: cron
cron: update browserlist
steps:
- name: update browserlist
image: node:20-slim
commands:
- npm ci
- npx update-browserslist-db@latest
- npm run test
- name: push commit
image: appleboy/drone-git-push
settings:
branch: master
remote: git@forge.adm.ink:adamas/curriculum.git
force: false
commit: true
commit_message: "dep: updatebrowserslist"

28
.woodpecker/workflow.yaml Normal file
View File

@ -0,0 +1,28 @@
when:
- event: push
branch: master
- event: manual
steps:
- name: test
image: node:20-slim
commands:
- npm ci
- npm run test
- name: build
image: node:20-slim
commands:
- npm run build
- name: publish
image: woodpeckerci/plugin-docker-buildx:5.2.2
settings:
username: adamas
registry: https://forge.adm.ink
password:
from_secret: DOCKER_PASSWORD
repo: forge.adm.ink/adamas/curriculum
purge: true
compress: true
tags: ${CI_COMMIT_TAG}

1
CODEOWNERS Normal file
View File

@ -0,0 +1 @@
* @AdamasFR

14
Dockerfile Normal file
View File

@ -0,0 +1,14 @@
FROM node:20-slim
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@5.0.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]

70
INSTRUCTIONS.md Normal file
View File

@ -0,0 +1,70 @@
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
## Available Scripts
In the project directory, you can run:
### `npm start`
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
The page will reload if you make edits.\
You will also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
### Code Splitting
This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
### Analyzing the Bundle Size
This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
### Making a Progressive Web App
This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
### Advanced Configuration
This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
### Deployment
This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
### `npm run build` fails to minify
This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)

View File

@ -1,70 +1,11 @@
# Getting Started with Create React App
# anthony-dumas.fr
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
Bonjour,
## Available Scripts
Vous trouverez ci-joint le code source de mon portefolio en ligne.
In the project directory, you can run:
Je vous souhaite une excellente journée,
### `npm start`
**Anthony Yvon Dumas**
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
The page will reload if you make edits.\
You will also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
### Code Splitting
This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
### Analyzing the Bundle Size
This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
### Making a Progressive Web App
This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
### Advanced Configuration
This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
### Deployment
This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
### `npm run build` fails to minify
This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
Senior Engineer @ Sopra Steria

30
docker-compose.yml Normal file
View File

@ -0,0 +1,30 @@
version: '2'
services:
server:
image: forge.adm.ink/adamas/curriculum:latest
container_name: anthony-dumas.fr-server
networks:
- traefik_default
labels:
- "traefik.enable=true"
- "traefik.http.routers.portfolio.rule=Host(`anthony-dumas.fr`)"
- "traefik.http.routers.portfolio.entrypoints=websecure"
- "traefik.http.routers.portfolio.tls.certresolver=myresolver"
- "traefik.http.services.portfolio.loadbalancer.server.port=3000"
- "traefik.http.middlewares.redirect-to-non-www.redirectregex.regex=^https?://www.anthony-dumas.fr/(.*)"
- "traefik.http.middlewares.redirect-to-non-www.redirectregex.replacement=https://anthony-dumas.fr/$${1}"
- "traefik.http.middlewares.redirect-to-non-www.redirectregex.permanent=true"
- "traefik.http.routers.portfolio.rule=Host(`anthony-dumas.fr`) || Host(`www.anthony-dumas.fr`)"
- "traefik.http.routers.portfolio.middlewares=redirect-to-non-www"
watchtower:
image: containrrr/watchtower
container_name: watchtower-anthony-dumas.fr
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 30 anthony-dumas.fr-server
networks:
traefik_default:
external: true

14
generate-react-cli.json Normal file
View File

@ -0,0 +1,14 @@
{
"usesTypeScript": false,
"usesStyledComponents": true,
"testLibrary": "None",
"component": {
"default": {
"path": "src/components",
"withStyle": true,
"withTest": false,
"withStory": false,
"withLazy": false
}
}
}

28898
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,18 @@
{
"name": "anthony-dumas.fr",
"version": "2022.1.001",
"version": "2023.1.001",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.2",
"@testing-library/user-event": "^12.5.0",
"bulma": "^0.9.4",
"bulma": "^1.0.0",
"powerglitch": "^2.3.2",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-intl": "^5.10.9",
"react-scripts": "4.0.1",
"sass": "^1.30.0",
"react-scripts": "^5.0.1",
"sass": "^1.71.1",
"web-vitals": "^0.2.4"
},
"scripts": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -7,7 +7,7 @@
<meta name="theme-color" content="#326273" />
<meta
name="description"
content="Web site created using create-react-app"
content="Anthony Dumas - Programmeur de les Internet."
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>Anthony Dumas</title>
<title>Anthony Dumas - Portfolio</title>
<!-- Matomo -->
<script>
var _paq = (window._paq = window._paq || []);
@ -49,15 +49,18 @@
<noscript>
<h1>Ce site requiert Javascript (désolé !)</h1>
Dirigez vous vers
<a href="https://files.adm.ink/anthony-dumas-cv.pdf"
>https://files.adm.ink/anthony-dumas-cv.pdf</a
<a
href="https://adamas-cdn.s3.fr-par.scw.cloud/portfolio/anthony-dumas-cv.pdf"
>ce lien</a
>
pour une version PDF.
Pour me parler directement, n'hésitez pas à m'envoyer un message sur <a rel="me" href="https://imaginair.es/@adamas">Mastodon</a>!
pour une version PDF. Pour me parler directement, n'hésitez pas à
m'envoyer un message sur
<a rel="me" href="https://social.adm.ink/@adamas">Mastodon</a>!
</noscript>
<div id="root"></div>
<script src="https://unpkg.com/ionicons@latest/dist/ionicons.js"></script>
<a style="display:none" rel="me" href="https://imaginair.es/@adamas">Mastodon</a>
<script src="https://unpkg.com/ionicons@7.4.0/dist/ionicons.js"></script>
<a style="display: none" rel="me" href="https://social.adm.ink/@adamas"
>Mastodon</a
>
</body>
</html>

5
robots.txt Normal file
View File

@ -0,0 +1,5 @@
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /

View File

@ -1,37 +0,0 @@
@charset "utf-8"
// Import a Google Font
@import url('https://fonts.googleapis.com/css?family=Nunito:400,700')
// Set your brand colors
$purple: #8a4d76
$pink: #fa7c91
$brown: #757763
$beige-light: #d0d1cd
$beige-lighter: #eff0eb
// Update Bulma's global variables
$family-sans-serif: 'Nunito', sans-serif
$grey-dark: $brown
$grey-light: $beige-light
$primary: $purple
$link: $pink
$widescreen-enabled: false
$fullhd-enabled: false
// Update some of Bulma's component variables
$body-background-color: $beige-lighter
$control-border-width: 2px
$input-border-color: transparent
$input-shadow: none
// Import only what you need from Bulma
@import '../node_modules/bulma/sass/utilities/_all.sass'
@import '../node_modules/bulma/sass/base/_all.sass'
@import '../node_modules/bulma/sass/elements/button.sass'
@import '../node_modules/bulma/sass/elements/container.sass'
@import '../node_modules/bulma/sass/elements/form.sass'
@import '../node_modules/bulma/sass/elements/title.sass'
@import '../node_modules/bulma/sass/components/navbar.sass'
@import '../node_modules/bulma/sass/layout/hero.sass'
@import '../node_modules/bulma/sass/layout/section.sass'

View File

@ -1,8 +1,18 @@
import { render, screen } from '@testing-library/react';
import App from './App';
import React from 'react';
import { IntlProvider } from 'react-intl';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
import { render, screen } from '@testing-library/react';
import MenuComponent from './App';
import { getTexts } from './services/message.service';
test('renders Anthony Yvon Dumas', async () => {
render(<IntlProvider locale={"fr"}
defaultLocale={"fr"}
messages={getTexts("fr")}>
<MenuComponent />
</IntlProvider>);
expect(await screen.findByText("Anthony Yvon Dumas")).toBeInTheDocument();
});

View File

@ -1 +1 @@
@import "main.scss";
@use "main.scss";

View File

@ -7,40 +7,29 @@ $deep-koamaru: #152528;
$myrtle-green: #1d353a;
$cadet-blue: #25444b;
$neon-carrot: #142225;
$white: #ffffff;
$admink-brand: #f38d68;
/**
Variables Bulma
**/
$primary: $cadet-blue;
$primary-invert: #fff;
$info: $myrtle-green;
$info-invert: #fff;
$footer-color: $deep-koamaru;
$success: $deep-koamaru;
$link: $neon-carrot;
$link-hover: "";
@use "bulma/sass" with (
$primary: $cadet-blue,
$info: $myrtle-green,
$footer-color: $deep-koamaru,
$success: $deep-koamaru,
$link: $neon-carrot
);
html {
background-color: $primary;
background-color: $myrtle-green;
}
body {
overflow-x: hidden;
}
@import "../../node_modules/bulma/bulma";
#idCard {
.hero-body {
padding-bottom: 2rem;
padding-top: 2rem;
}
// permet de re-aligner les tags avec les subtitles
.tags {
margin-top: -1.25rem;
}
}
// retire les barres de scroll des panneaux experience/education
@ -49,7 +38,7 @@ body {
}
footer {
background-color: $footer-color !important;
background-color: $deep-koamaru !important;
color: #fff;
}
@ -88,12 +77,12 @@ section#contact .button {
//
footer small {
color: $white;
color: #fff;
}
// Photo de Profil
#photoProfil {
background-color: $primary;
background-color: $myrtle-green;
}
.tile.is-vertical {
@ -111,3 +100,7 @@ footer small {
text-align: left;
font-size: 20px;
}
p.title a {
color: $admink-brand !important;
}

View File

@ -1,6 +1,6 @@
import './ButtonIcon.scss';
import React, { Component } from '../../../node_modules/react';
import React, { Component } from 'react';
export default class ButtonIcon extends Component {
@ -11,7 +11,7 @@ export default class ButtonIcon extends Component {
render() {
return <a rel="noopener noreferrer me" href={this.props.lien} target="_blank">
<button className="button" aria-label="Bouton {this.props.aria-label}">
<span class="icon">
<span className="icon">
<ion-icon name={this.props.icon}></ion-icon>
</span>
</button>

View File

@ -1,6 +1,6 @@
import './ContactButton.scss';
import React, { Component } from '../../../node_modules/react';
import React, { Component } from 'react';
// import { connect } from "react-redux";
@ -13,10 +13,10 @@ export default class ContactButton extends Component {
// }
render() {
const data = this.props.data;
return <div class="column is-3">
<a target="_blank" rel="noreferrer noopener" href={data.url} class="hide button is-large is-fullw-mobile"
return <div className="column is-3">
<a target="_blank" rel="noreferrer noopener" href={data.url} className="hide button is-large is-fullw-mobile"
title={`Go to ${data.title}`}>
<span class="icon">
<span className="icon">
<ion-icon name={data.icon}></ion-icon>
</span>
<span>{data.title}</span>

View File

@ -1,39 +1,40 @@
import React, {Component} from '../../../node_modules/react';
import './ContactCard.scss';
import React, { Component } from 'react';
import { injectIntl } from 'react-intl';
import './ContactCard.scss'
import ContactButton from '../ContactButton/index';
// import { connect } from "react-redux";
// import { bindActionCreators } from "redux";
// import * as contactCardActions from "../../store/contactCard/actions";
class ContactCard extends Component {
// constructor(props) {
// super(props);
// this.state = {};
// }
render() {
const contactCardMessage = this.props.intl.messages.contactCard;
return <section class="hero is-info dontPrint" id="contact">
<div class="hero-body">
<div class="container">
<h1 class="title">
{contactCardMessage.title}
</h1>
<h2 class="subtitle">
{contactCardMessage.subtitle}
</h2>
<div class="columns">
{contactCardMessage.ways.map(function(button, index){
return <ContactButton
data={button}/>;
})}
</div>
// constructor(props) {
// super(props);
// this.state = {};
// }
render() {
const contactCardMessage = this.props.intl.messages.contactCard;
return <section className="hero is-info dontPrint" id="contact">
<div className="hero-body">
<div className="container">
<h1 className="title">
{contactCardMessage.title}
</h1>
<h2 className="subtitle">
{contactCardMessage.subtitle}
</h2>
<div className="columns">
{contactCardMessage.ways.map(function (button, index) {
return <ContactButton key={index}
data={button} />;
})}
</div>
</div>
</div>
</section>;
}
</section>;
}
}
export default injectIntl(ContactCard)
export default injectIntl(ContactCard)

View File

@ -1,9 +1,9 @@
import React, {Component} from '../../../node_modules/react';
import './ExperienceCard.scss'
import './ExperienceCard.scss';
import React, { Component } from 'react';
import ExperienceSlimSpanWrapper from '../ExperienceSlimSpan/ExperienceSlimSpan';
// import { connect } from "react-redux";
// import { bindActionCreators } from "redux";
// import * as MenuComponentActions from "../../store/MenuComponent/actions";
export default class ExperienceCard extends Component {
// constructor(props) {
@ -13,36 +13,39 @@ export default class ExperienceCard extends Component {
render() {
var data = this.props.data;
var imgSrc = data.logo;
return <div class="card-content">
<div class="media">
<div class="media-left">
<a href={data.url} target="_blank" rel="noreferrer">
<figure class="image is-48x48">
<img src={imgSrc} alt="Logo Entreprise"/>
</figure>
</a>
</div>
<div class="media-content">
<p class="title is-4">{data.occupation}</p>
<p class="subtitle is-6">{data.entreprise} - {data.location} - {data.duration}</p>
<div class="tags">
{data.tags.map(function(name, index){
return <span key={ index } class="tag">{name}</span>;
})}
</div>
</div>
</div>
<div class="content">
{data.description}
</div>
{data.commentaire ? <div class="comment">
{data.commentaire}
</div> : ''}
</div>
return <div className="card-content">
<div className="media">
<div className="media-left">
<a href={data.url} target="_blank" rel="noreferrer">
<figure className="image is-48x48">
<img src={imgSrc} alt="Logo Entreprise" />
</figure>
</a>
</div>
<div className="media-content">
<p className="title is-4">{data.occupation}</p>
<p className="subtitle is-6"><strong>{data.entreprise}</strong> - {data.location} - {data.duration}</p>
<div className="tags">
{data.tags.map(function (name, index) {
return <span key={index} className="tag">{name}</span>;
})}
</div>
<div className='description content'>
<div dangerouslySetInnerHTML={{ __html: data.description }} />
</div>
{data.missions ?
data.missions.map(function (mission, index) {
return <ExperienceSlimSpanWrapper key={index}
data={mission} />;
}) : ''
}
{data.commentaire ? <div className="comment">
{data.commentaire}
</div> : ''}
</div>
</div>
</div>
}
}
// export default connect(
// ({ MenuComponent }) => ({ ...MenuComponent }),
// dispatch => bindActionCreators({ ...MenuComponentActions }, dispatch)
// )( MenuComponent );
}

View File

@ -1,4 +1,28 @@
.comment{
font-style: italic;
margin-top: -25px;
}
.comment {
font-style: italic;
margin-top: -25px;
}
// permet de re-aligner les tags avec les subtitles
.tags,
.description,
.comment {
margin-top: -1.25rem;
}
.card-content {
margin-top: 1rem;
}
.mission.card-content {
margin-top: 0;
}
.mission .media {
border-top-style: none;
align-items: self-end;
}
.mission div.media {
padding-top: 2px;
}

View File

@ -0,0 +1,23 @@
import React, { Component } from 'react';
export default class ExperienceSlimSpan extends Component {
render() {
var data = this.props.data;
var imgSrc = data.logo;
return <div className="mission card-content">
<div className="media">
<div className="media-left">
<a href={data.url} target="_blank" rel="noreferrer">
<figure className="image is-24x24">
<img src={imgSrc} alt="Logo Entreprise" />
</figure>
</a>
</div>
<div className="media-content">
<p className="subtitle is-6">{data.occupation} {data.situation} <strong>{data.entreprise}</strong> - {data.duration}</p>
</div>
</div>
</div>
}
};

View File

@ -1,9 +1,10 @@
import './FooterCard.scss';
import React, { Component } from 'react';
import { injectIntl } from 'react-intl';
import React, { Component } from '../../../node_modules/react';
import bulmaLogo from '../../images/made-with-bulma.webp';
import scalewayLogo from '../../images/scaleway_logo.webp';
// import { connect } from "react-redux";
@ -16,17 +17,17 @@ class FooterCard extends Component {
// }
render() {
const footerMessage = this.props.intl.messages.footer;
return <footer class="footer has-text-centered dontPrint">
<div class="container">
<div class="columns">
<div class="column is-8-desktop is-offset-2-desktop">
return <footer className="footer has-text-centered dontPrint">
<div className="container">
<div className="columns">
<div className="column is-8-desktop is-offset-2-desktop">
<p>
<strong class="has-text-weight-semibold">
<strong className="has-text-weight-semibold">
anthony-dumas.fr
</strong>
</p>
<p>
<small class="sosumi">
<small className="sosumi">
{footerMessage.legalNotice}
</small>
</p>
@ -37,8 +38,8 @@ class FooterCard extends Component {
<img src={bulmaLogo} alt="Made with Bulma" width="128" height="24" />
</a>
<br />
<a rel="noopener noreferrer" href="https://www.linode.com/" aria-label="Link to Linode.com" id="linode-logo" target="_blank">
<svg viewBox="0 0 230 90" width="115" height="30"><g fill="#FFF"><path d="M93.8 27.8l5.8-1.4v28c0 3.1.9 4.9 2.7 5.5-.9 1.7-2.4 2.6-4.6 2.6-2.6 0-4-1.8-4-5.5V27.8zM108.4 62V41.8h-3.2V37h9.1v25h-5.9zm3-34.6c.9 0 1.7.3 2.4 1s1 1.5 1 2.4c0 .9-.3 1.7-1 2.4s-1.5 1-2.4 1c-.9 0-1.7-.3-2.4-1s-1-1.5-1-2.4c0-.9.3-1.7 1-2.4s1.5-1 2.4-1zM137.1 62V47.6c0-2.1-.4-3.7-1.2-4.6-.8-1-2.1-1.5-4-1.5-.9 0-1.8.2-2.7.7-1 .5-1.7 1.1-2.3 1.8v18h-5.8V37.1h4.2l1.1 2.3c1.6-1.9 3.9-2.8 7-2.8 3 0 5.3.9 7 2.7 1.7 1.8 2.6 4.3 2.6 7.4V62h-5.9zM147.5 49.5c0-3.8 1.1-6.9 3.3-9.3 2.2-2.4 5.1-3.6 8.7-3.6 3.8 0 6.7 1.1 8.8 3.4 2.1 2.3 3.1 5.4 3.1 9.4s-1.1 7.1-3.2 9.5c-2.1 2.3-5 3.5-8.8 3.5-3.8 0-6.7-1.2-8.8-3.5-2-2.4-3.1-5.5-3.1-9.4zm6.1 0c0 5.5 2 8.2 5.9 8.2 1.8 0 3.2-.7 4.3-2.1 1.1-1.4 1.6-3.5 1.6-6.1 0-5.4-2-8.1-5.9-8.1-1.8 0-3.3.7-4.3 2.1-1.1 1.4-1.6 3.4-1.6 6zM192.1 62v-1.5c-.5.5-1.3 1-2.4 1.4-1.1.4-2.3.6-3.6.6-3.5 0-6.2-1.1-8.2-3.3-2-2.2-3-5.3-3-9.2 0-3.9 1.1-7.1 3.4-9.6s5.1-3.7 8.6-3.7c1.9 0 3.6.4 5.2 1.2v-10l5.8-1.4V62h-5.8zm0-19c-1.2-1-2.5-1.5-3.9-1.5-2.3 0-4.1.7-5.4 2.1-1.3 1.4-1.9 3.5-1.9 6.1 0 5.2 2.5 7.8 7.5 7.8.6 0 1.2-.2 2.1-.5.8-.3 1.3-.7 1.6-1V43zM226 51.3h-17.8c.1 2 .8 3.5 2 4.6 1.3 1.1 2.9 1.7 5.1 1.7 2.6 0 4.7-.7 6-2.1l2.3 4.4c-2 1.7-5.1 2.5-9.2 2.5-3.8 0-6.8-1.1-9-3.3-2.2-2.2-3.3-5.3-3.3-9.3 0-3.9 1.2-7.1 3.6-9.5 2.4-2.4 5.3-3.6 8.7-3.6 3.6 0 6.5 1.1 8.7 3.2 2.2 2.2 3.3 4.9 3.3 8.2.1.7-.1 1.7-.4 3.2zm-17.6-4.4h12.2c-.4-3.6-2.4-5.5-6-5.5-3.3.1-5.4 1.9-6.2 5.5z"></path></g><path fill="#004712" d="M65.9 47.4l-1 11.5-3.3-2.3.4-5.8v-.1-.1l-.1-.1-.1-.1-7.1-4.7.1-5.1 11.1 6.8zM48.5 59.9L43.4 56v.9c0 .2-.1.4-.2.5L39.4 60l4.2 3.4.1.1v.2l.2 4 4.7 3.9-.1-11.7zm-32.1 5l2.4 11.5 9.9 10.5L27 75.3 16.4 64.9zm9.3 1.7l-2.4-16.1-12-10 3.2 15.6 11.2 10.5zm-3.8-26l-3.3-22.8L4.8 9.2l4.5 21.5 12.6 9.9z"></path><path fill="#00B259" d="M75.7 41.2l-1.5 10.9-8.2 6.6 1-11.2 8.7-6.3zM49.6 59.9l.1 11.8 10.5-8.4.7-11.5-11.3 8.1zm-6.8 4.8L28 75.3l1.8 12.2 13.4-10.7-.4-12.1zm-.4-8l-.7-16-17.3 9.9 2.4 16.6 15.6-10.5zm-1.1-25.3l-.9-21.6-20.8 8L23 41l18.3-9.6z"></path><path d="M76.9 40c0-.1 0-.1 0 0v-.2s0-.1-.1-.1c0 0-.1 0-.1-.1l-12-6.7c-.2-.1-.4-.1-.5 0L54 39.1h-.1v.6l-.1 5.4-4.1-2.7c-.2-.1-.4-.1-.6 0L43 45.8l-.3-6v-.1-.1-.1-.1-.1h-.1l-6.2-4.1 5.8-3c.2-.1.3-.3.3-.5L41.4 9v-.1s0-.1-.1-.1c0 0 0-.1-.1-.1L25.5 1.1c-.1-.1-.2-.1-.3-.1L3.9 7.6s-.1 0-.1.1c0 0-.1 0-.1.1v.6l4.7 22.9c0 .1.1.2.2.3l6.4 5-4.7 2.2s-.1 0-.1.1c0 0 0 .1-.1.1v.2l3.6 17.2c0 .1.1.2.2.3l4.5 4.2-3 1.8-.1.1s0 .1-.1.1V63.2L18 76.5c0 .1.1.2.1.3l10.9 12h.1s.1 0 .1.1h.5l14.4-11.5c.1-.1.2-.3.2-.4l-.3-7.9 4.8 4s.1 0 .1.1h.5L61 64c.1-.1.2-.2.2-.4l.4-5.8 3.5 2.4h.4s.1 0 .1-.1l9.4-7.5c.1-.1.2-.2.2-.3L76.9 40c0 .1 0 .1 0 0zM66 58.7l1-11.2 8.8-6.3-1.5 10.9-8.3 6.6zm-4.4-2.1l.4-5.8v-.1-.1l-.1-.1-.1-.1-7.1-4.7.1-5.1 11.1 6.9-1 11.5-3.3-2.4zm-1.5 6.7l-10.5 8.4-.1-11.8 11.3-8.1-.7 11.5zM43.3 76.8L29.8 87.5 28 75.3l14.7-10.5.6 12zm-24.6-.4l-2.4-11.5L27 75.3l1.7 11.6-10-10.5zm-.2-58.6l3.3 22.8-12.5-9.9L4.8 9.2l13.7 8.6zm21.9-8l.9 21.6L23 41l-3.4-23.2 20.8-8zm2 46.9L26.8 67.1l-2.4-16.6 17.3-9.9.7 16.1zm-19.1-6.1l2.4 16.1-11.2-10.6-3.2-15.6 12 10.1zm20.5 13.1v-.1-.1l-.1-.1-4.2-3.4 3.8-2.6c.2-.1.2-.3.2-.5V56l5.1 3.9.1 11.8-4.7-3.9-.2-4.1z"></path></svg>
<a rel="noopener noreferrer" href="https://www.scaleway.com/fr/" aria-label="Link to scaleway.com" id="scaleway-logo" target="_blank">
<img src={scalewayLogo} alt="Powered by Scaleway" width="128" height="24" />
</a>
</p>
</div>

View File

@ -1,8 +1,9 @@
import './MainCard.scss';
import { PowerGlitch } from 'powerglitch';
import React, { Component } from 'react';
import { FormattedMessage, injectIntl } from 'react-intl';
import React, { Component } from '../../../node_modules/react';
import headshotFond from '../../images/headshot_fond.webp';
import headshotMain from '../../images/headshot_main.webp';
import ButtonIcon from '../ButtonIcon/index';
@ -10,51 +11,84 @@ import ExperienceCard from '../ExperienceCard/index';
class MainCard extends Component {
componentDidMount() {
PowerGlitch.glitch('#photoProfil img',
{
playMode: 'hover',
hideOverflow: true,
timing: {
duration: 1000,
iterations: 15,
easing: 'ease-in-out',
},
glitchTimeSpan: {
start: 0.0,
end: 0.7,
},
shake: {
velocity: 10,
amplitudeX: 0.4,
amplitudeY: 0.4,
},
slice: {
count: 4,
velocity: 10,
minHeight: 0.02,
maxHeight: 0.40,
hueRotate: true,
},
}
);
}
render() {
var metaThemeColor = document.querySelector("meta[name=theme-color]");
metaThemeColor.setAttribute("content", window.matchMedia('(prefers-color-scheme: dark)').matches ? "#25444b" : "#5c9ead");
if (metaThemeColor !== null) {
metaThemeColor.setAttribute("content", window.matchMedia('(prefers-color-scheme: dark)').matches ? "#25444b" : "#5c9ead");
}
const experienceCardMessage = this.props.intl.messages.experienceCard;
return <section id="idCard" class="hero is-medium is-info">
<div class="hero-body">
<div class="container">
<div class="columns">
<div class="column is-2 is-hidden-touch is-hidden-desktop-only dontPrint"></div>
<div id="photosAndButtons" class="column is-3-widescreen is-4-tablet is-success">
<div class="card">
<div class="card-image">
<figure id="photoProfil" class="image">
<img fetchpriority="high" class="background" src={headshotFond} alt="Anthony Dumas" />
<img fetchpriority="high" class="actor" src={headshotMain} alt="Anthony Dumas" />
return <section id="idCard" className="hero is-medium is-info">
<div className="hero-body">
<div className="container">
<div className="columns">
<div className="column is-1 is-hidden-touch is-hidden-desktop-only dontPrint"></div>
<div id="photosAndButtons" className="column is-3-widescreen is-4-tablet is-success">
<div className="card">
<div className="card-image">
<figure id="photoProfil" className="image" onMouseOver={this.glitching} >
<img fetchpriority="high" className="background" src={headshotFond} alt="Anthony Dumas" />
<img fetchpriority="high" className="actor" src={headshotMain} alt="Anthony Dumas" />
</figure>
</div>
<div class="card-content">
<div class="media">
<div class="media-content">
<p id="buttonsUnderPhoto" class="field is-grouped">
<p class="control">
<div className="card-content">
<div className="media">
<div className="media-content">
<div id="buttonsUnderPhoto" className="field is-grouped">
<p className="control">
<ButtonIcon
icon="logo-github"
aria-label="Github"
lien="https://github.com/AdamasFR" />
</p>
<p class="control">
<p className="control">
<ButtonIcon
icon="logo-linkedin"
aria-label="Linkedin"
lien="https://www.linkedin.com/in/anthonyyvondumas/" />
</p>
<p class="control">
<p className="control">
<ButtonIcon
icon="logo-mastodon"
aria-label="Mastodon"
lien="https://imaginair.es/@adamas" />
lien="https://social.adm.ink/@adamas" />
</p>
</p>
<p id="boutonCV" class="field">
</div>
<p id="boutonCV" className="field">
<a rel="noreferrer noopener" target="_blank"
href="https://files.adm.ink/anthony-dumas-cv.pdf" >
<button class="button is-fullwidth" aria-label="Bouton Curriculum Vitæ">
<span class="icon">
href="https://adamas-cdn.s3.fr-par.scw.cloud/portfolio/anthony-dumas-cv.pdf" >
<button className="button is-fullwidth" aria-label="Bouton Curriculum Vitæ">
<span className="icon">
<ion-icon name="document-attach-outline"></ion-icon>
</span>
<span><FormattedMessage id="curriculumVitaeLink" /></span>
@ -64,22 +98,22 @@ class MainCard extends Component {
</div>
</div>
<div class="content">
<div className="content">
</div>
</div>
</div>
</div>
<div class="column is-9-tablet is-7-widescreen" id="experiences">
<span class="title">{experienceCardMessage.title.experience}</span>
<div className="column is-9-tablet is-7-widescreen" id="experiences">
<span className="title">{experienceCardMessage.title.experience}</span>
{experienceCardMessage.experiences.map(function (experience, index) {
return <ExperienceCard
return <ExperienceCard key={index}
data={experience} />;
})}
<span class="title">{experienceCardMessage.title.education}</span>
<span className="title">{experienceCardMessage.title.education}</span>
{experienceCardMessage.education.map(function (education, index) {
return <ExperienceCard
return <ExperienceCard key={index}
data={education} />;
})}
</div>

View File

@ -1,5 +1,3 @@
@import "../../_sass/main.scss";
#photoProfil {
overflow: clip;
border: 1px solid #3c3c3c;

View File

@ -1,8 +1,8 @@
import './MenuComponent.scss';
import React, { Component } from 'react';
import { FormattedMessage, injectIntl } from 'react-intl';
import React, { Component } from '../../../node_modules/react';
import { URL_add_parameter } from '../../services/parameters.service';
@ -22,21 +22,22 @@ class MenuComponent extends Component {
render() {
const buttonsLanguagesMessage = this.props.intl.messages.global.buttons.languages;
return <section id="menu" class="hero is-primary dontPrint">
<div class="hero-body">
<div class="container">
<div class="columns">
<div class="column">
<h1 class="title">
const currentJob = this.props.intl.messages.experienceCard.experiences[0];
return <section id="menu" className="hero is-primary dontPrint">
<div className="hero-body">
<div className="container">
<div className="columns">
<div className="column">
<h1 className="title">
<FormattedMessage id="title" />
</h1>
<h2 class="subtitle">
<FormattedMessage id="subtitle" />
<h2 className="subtitle">
{currentJob.occupation} @ {currentJob.entreprise}
</h2>
</div>
<div class="column is-hidden-touch">
<div className="column is-hidden-touch">
<div id="langButtons">
<div class="buttons">
<div className="buttons">
<span className="button is-light" onClick={this.honhonhon} aria-label="Visiter le site en Français">
{buttonsLanguagesMessage.fr}
</span>

View File

@ -1,25 +1,29 @@
import React, {Component} from 'react';
import './ProjectCard.scss'
import './ProjectCard.scss';
import React, { Component } from 'react';
export default class ProjectCard extends Component {
render() {
const data = this.props.data;
return <div class="tile is-vertical is-4">
<div class="tile">
<div class="tile is-parent">
<article class="tile is-child notification is-info">
<p class="title">{data.title}</p>
<a href={data.url} rel="noopener noreferrer" target="_blank">
<figure class="image is-4by3">
<img src={data.image}
alt={data.imgAlt}
title={data.imgTitle} />
</figure>
</a>
</article>
</div>
</div>
</div>;
return <div className="tile is-vertical is-4">
<div className="tile">
<div className="cell">
<article className="box notification is-info">
<p className="title">
<a href={data.url} rel="noopener noreferrer" target="_blank">{data.title}</a>
</p>
<a href={data.url} rel="noopener noreferrer" target="_blank">
<figure className="image is-4by3">
<img src={data.image}
alt={data.imgAlt}
title={data.imgTitle} />
</figure>
</a>
</article>
</div>
</div>
</div>;
}
}
}

View File

@ -1,20 +1,20 @@
import './ProjectsCard.scss';
import React, { Component } from 'react';
import { injectIntl } from 'react-intl';
import React, { Component } from '../../../node_modules/react';
import ProjectCard from '../ProjectCard/index';
class ProjectsCard extends Component {
render() {
const projectCardsMessage = this.props.intl.messages.projectCard;
return <section id="projets" class="hero is-success">
<div class="hero-body">
<div class="container">
<div class="tile is-ancestor">
return <section id="projets" className="hero is-success">
<div className="hero-body">
<div className="container">
<div className="grid">
{projectCardsMessage.projects.map(function (projects, index) {
return <ProjectCard
return <ProjectCard key={index}
data={projects}
/>;
})}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,6 +1,5 @@
{
"title": "Anthony Yvon Dumas",
"subtitle": "Software Developer @ Harvest",
"curriculumVitaeLink": "CV (in .pdf)",
"experienceCard": {
"title": {
@ -8,16 +7,36 @@
"education": "Education"
},
"experiences": [
{
"occupation": "Senior Engineer",
"logo": "../../images/logos/soprasteria.co.uk.webp",
"url": "https://www.soprasteria.com/",
"duration": "since June 2023",
"entreprise": "Sopra Steria Group",
"location": "Clermont-Ferrand",
"description": "Fullstack Developer @ Michelin [since 02/24]<br/>Developer for Imprimerie Nationale [06/23 - 02/24]",
"tags": ["Java", "Angular", "Spring", "DevOps", "Linux", "Azure", "Scrum"]
},
{
"occupation": "Distribution Coordinator",
"logo": "../../images/logos/laclameur.org.webp",
"url": "https://www.laclameur.org",
"duration": "since 2021",
"entreprise": "La Clameur (Non-Profit Law 1901)",
"location": "remote",
"description": "",
"tags": ["Notion", "CPanel", "Wordpress", "RSS", "Podcast Distribution"]
},
{
"occupation": "Software Developer",
"logo": "../../images/logos/harvest.fr.webp",
"url": "https://www.harvest.fr",
"duration": "(since 2016)",
"entreprise": "Harvest",
"duration": "July 2016 - June 2023",
"entreprise": "Harvest Group",
"location": "Clermont-Ferrand",
"description": "Development of responsive websites and APIs for wealth management and finance professionals.",
"tags": [
"Java EE",
"Java",
"Angular",
"OpenAPI",
"jQuery",
@ -65,6 +84,13 @@
"image": "../../images/portfolio/admPhotos.webp",
"imgAlt": "A picture of a beautiful town.",
"imgTitle": "A picture of a beautiful town."
},
{
"title": "Blog",
"url": "https://blog.adm.ink/?referer=portfolio",
"image": "../../images/portfolio/blog.webp",
"imgAlt": "Screenshot of blog.adm.ink, you can see the title of the blog and various links. You can also see a plate of food, I think it was hummous.",
"imgTitle": "Screenshot of blog.adm.ink, you can see the title of the blog and various links. You can also see a plate of food, I think it was hummous."
}
]
},
@ -85,20 +111,20 @@
"aria-label": "LinkedIn"
},
{
"title": "Telegram",
"url": "https://t.me/adamas_FR",
"title": "Signal",
"url": "https://signal.me/#eu/cpQOzblF-DM6sltmP6s58NYmnxMUEQHE-IxRnLPHXXaE7oQJc_JHGrIlVulPwGgu",
"icon": "call-outline",
"aria-label": "Telegram"
"aria-label": "Signal"
},
{
"title": "Mastodon",
"url": "https://imaginair.es/@adamas",
"url": "https://social.adm.ink/@adamas",
"icon": "logo-mastodon",
"aria-label": "Mastodon"
}
]
},
"footer": {
"legalNotice": "© 2014 - 2023 Anthony Dumas."
"legalNotice": "© 2014 - 2024 Anthony Dumas."
}
}

View File

@ -1,6 +1,5 @@
{
"title": "Anthony Yvon Dumas",
"subtitle": "Software Developer @ Harvest",
"curriculumVitaeLink": "CV (.pdf)",
"experienceCard": {
"title": {
@ -8,22 +7,72 @@
"education": "Études et diplômes"
},
"experiences": [
{
"occupation": "Senior Engineer",
"logo": "../../images/logos/soprasteria.co.uk.webp",
"url": "https://www.soprasteria.com/",
"duration": "depuis 06/2023",
"entreprise": "Sopra Steria Group",
"location": "Clermont-Ferrand",
"tags": [
"Java",
"Angular",
"Spring",
"DevOps",
"Linux",
"Azure",
"Scrum"
],
"missions": [
{
"entreprise": "Sprint Break",
"logo": "../../images/logos/soprasteria.co.uk.webp",
"url": "https://www.michelin.fr",
"occupation": "Trésorier",
"duration": "depuis 03/2025",
"situation": "@"
},
{
"entreprise": "Michelin",
"logo": "../../images/logos/michelin.webp",
"url": "https://www.michelin.fr",
"occupation": "Fullstack Developer",
"duration": "depuis 02/2024",
"situation": "@"
},
{
"entreprise": "IN Groupe",
"logo": "../../images/logos/ingroupe.webp",
"url": "https://ingroupe.com/fr/",
"occupation": "Maintenance Applicative",
"duration": "06/2023 - 02/2024",
"situation": "pour"
}
]
},
{
"occupation": "Responsable Distribution",
"logo": "../../images/logos/laclameur.org.webp",
"url": "https://www.laclameur.org",
"duration": "depuis 2021",
"entreprise": "La Clameur (Association Loi 1901)",
"location": "en distanciel",
"description": "Maintenance du site Internet et des fluxs RSS, communication interne.",
"tags": [
"CPanel",
"Wordpress",
"Distribution de Podcast"
]
},
{
"occupation": "Software Developer",
"logo": "../../images/logos/harvest.fr.webp",
"url": "https://www.harvest.fr",
"duration": "depuis 2016",
"entreprise": "Harvest",
"duration": "2016 - 2023",
"entreprise": "Harvest Groupe",
"location": "Clermont-Ferrand",
"description": "Développement de simulateurs dédiés au conseil et à la vente de produits bancaires.",
"tags": [
"Java EE",
"Angular",
"OpenAPI",
"jQuery",
"Spring",
"Environnement Scrum"
]
"description": "Développement de simulateurs Web dédiés au conseil et à la vente de produits bancaires.",
"tags": ["Java", "Angular", "OpenAPI", "Accessibilité", "jQuery", "Spring", "Scrum"]
},
{
"occupation": "Stagiaire Développeur Internet des Objets",
@ -51,28 +100,18 @@
"entreprise": "Université d'Auvergne",
"location": "Le Puy-en-Velay",
"description": "Programmation 3D temps réel, Web, infographie 3D, retouche d'image.",
"tags": ["Unity", "3DSMax", "Photoshop", "C++", "Python", "Web Design"]
},
{
"occupation": "L2 Informatique",
"logo": "../../images/logos/www.uca.fr.webp",
"url": "https://www.uca.fr",
"duration": "2016",
"entreprise": "Université Clermont-Auvergne",
"location": "Clermont-Ferrand",
"description": "",
"tags": ["Python", "Linux"]
"tags": ["Web Design", "Unity", "3DSMax", "Photoshop", "C++", "Python", "Gestion de Projet"]
}
]
},
"projectCard": {
"projects": [
{
"title": "IOT@Michelin",
"url": "https://prezi.com/m/o8ey8mmpnkvp/",
"image": "../../images/portfolio/computerNonSense.webp",
"imgAlt": "Une photo d'un micro ordinateur dans ma main",
"imgTitle": "Une photo d'un micro ordinateur dans ma main"
"title": "adamas.dev",
"url": "https://adamas.dev/?referer=portfolio",
"image": "../../images/portfolio/blog.webp",
"imgAlt": "Capture d'écran de adamas.dev. On peut y voir le logo du blog, ainsi que quelques liens de navigations, ainsi que la photo accompagnant un article, une assiete de houmous.",
"imgTitle": "Capture d'écran de adamas.dev. On peut y voir le logo du blog, ainsi que quelques liens de navigations, ainsi que la photo accompagnant un article, une assiete de houmous"
},
{
"title": "ADM Photographie",
@ -80,6 +119,13 @@
"image": "../../images/portfolio/admPhotos.webp",
"imgAlt": "Une photo du village de mon enfance",
"imgTitle": "Une photo du village de mon enfance"
},
{
"title": "IOT@Michelin",
"url": "https://prezi.com/m/o8ey8mmpnkvp/",
"image": "../../images/portfolio/computerNonSense.webp",
"imgAlt": "Une photo d'un micro ordinateur dans ma main",
"imgTitle": "Une photo d'un micro ordinateur dans ma main"
}
]
},
@ -100,20 +146,20 @@
"aria-label": "LinkedIn"
},
{
"title": "Telegram",
"url": "https://t.me/adamas_FR",
"title": "Signal",
"url": "https://signal.me/#eu/cpQOzblF-DM6sltmP6s58NYmnxMUEQHE-IxRnLPHXXaE7oQJc_JHGrIlVulPwGgu",
"icon": "call-outline",
"aria-label": "Telegram"
"aria-label": "Signal"
},
{
"title": "Mastodon",
"url": "https://imaginair.es/@adamas",
"url": "https://social.adm.ink/@adamas",
"icon": "logo-mastodon",
"aria-label": "Mastodon"
}
]
},
"footer": {
"legalNotice": "© 2014 - 2023 Anthony Dumas."
"legalNotice": "© 2014 - 2025 Anthony Yvon Dumas."
}
}

138
src/messages/test.json Normal file
View File

@ -0,0 +1,138 @@
{
"title": "Anthony Yvon Dumas",
"curriculumVitaeLink": "CV (.pdf)",
"experienceCard": {
"title": {
"experience": "Expériences professionnelles",
"education": "Études et diplômes"
},
"experiences": [
{
"occupation": "Ingénieur Logiciel",
"logo": "../../images/logos/soprasteria.co.uk.webp",
"url": "https://www.soprasteria.com/",
"duration": "depuis Juin 2023",
"entreprise": "Sopra Steria",
"location": "Clermont-Ferrand",
"description": "",
"tags": ["Java EE"]
},
{
"occupation": "Software Developer",
"logo": "../../images/logos/harvest.fr.webp",
"url": "https://www.harvest.fr",
"duration": "Juillet 2016 - Juin 2023",
"entreprise": "Harvest Groupe",
"location": "Clermont-Ferrand",
"description": "Développement de simulateurs dédiés au conseil et à la vente de produits bancaires.",
"tags": [
"Java EE",
"Angular",
"OpenAPI",
"jQuery",
"Spring",
"Environnement Scrum"
]
},
{
"occupation": "Coordinateur événementiel",
"logo": "../../images/logos/laclameur.org.webp",
"url": "https://www.laclameur.org",
"duration": "depuis 2021",
"entreprise": "La Clameur (Association Loi 1901)",
"location": "en distanciel",
"description": "Coordination des événements de l'association, maintenance du site Internet et des fluxs RSS.",
"tags": ["Notion", "CPanel", "Wordpress", "RSS"]
},
{
"occupation": "Stagiaire Développeur Internet des Objets",
"logo": "../../images/logos/michelin.webp",
"url": "https://www.michelin.fr",
"duration": "2015",
"entreprise": "Michelin",
"location": "Clermont-Ferrand",
"description": "Stage de fin d'étude DUT, etude du marché des objets connectés, création d'un prototype embarqué.",
"tags": [
"MongoDB",
"Node.js",
"Word",
"Powerpoint",
"Environnement Scrum"
]
}
],
"education": [
{
"occupation": "DUT Informatique - Imagerie Numérique",
"logo": "../../images/logos/www.iut-clermont.webp",
"url": "https://www.iut-clermont.fr/",
"duration": "Promotion 2015",
"entreprise": "Université d'Auvergne",
"location": "Le Puy-en-Velay",
"description": "Programmation 3D temps réel, Web, infographie 3D, retouche d'image.",
"tags": ["Unity", "3DSMax", "Photoshop", "C++", "Python", "Web Design"]
},
{
"occupation": "L2 Informatique",
"logo": "../../images/logos/www.uca.fr.webp",
"url": "https://www.uca.fr",
"duration": "2016",
"entreprise": "Université Clermont-Auvergne",
"location": "Clermont-Ferrand",
"description": "",
"tags": ["Python", "Linux"]
}
]
},
"projectCard": {
"projects": [
{
"title": "IOT@Michelin",
"url": "https://prezi.com/m/o8ey8mmpnkvp/",
"image": "../../images/portfolio/computerNonSense.webp",
"imgAlt": "Une photo d'un micro ordinateur dans ma main",
"imgTitle": "Une photo d'un micro ordinateur dans ma main"
},
{
"title": "ADM Photographie",
"url": "https://photos.adm.ink/",
"image": "../../images/portfolio/admPhotos.webp",
"imgAlt": "Une photo du village de mon enfance",
"imgTitle": "Une photo du village de mon enfance"
}
]
},
"contactCard": {
"title": "Contact",
"subtitle": "Vous pouvez me contacter de nombreuses façons !",
"ways": [
{
"title": "Courriel",
"url": "mailto:anthony@dumas.cc",
"icon": "mail-outline",
"aria-label": "Email"
},
{
"title": "LinkedIn",
"url": "https://www.linkedin.com/in/anthonyyvondumas/",
"icon": "logo-linkedin",
"aria-label": "LinkedIn"
},
{
"title": "Telegram",
"url": "https://t.me/adamas_FR",
"icon": "call-outline",
"aria-label": "Telegram"
},
{
"title": "Mastodon",
"url": "https://imaginair.es/@adamas",
"icon": "logo-mastodon",
"aria-label": "Mastodon"
}
]
},
"footer": {
"legalNotice": "© 2014 - 2023 Anthony Dumas."
}
}

View File

@ -23,7 +23,11 @@ export const language = function () {
};
export const langJson = function () {
const messageLocalized = i18nConfig.messages[language()];
return getTexts(language());
};
export const getTexts = function (lang) {
const messageLocalized = i18nConfig.messages[lang];
const messageGlobal = i18nConfig.messages[GLOBAL_MESSAGE_KEY];
const messageMerged = {
...messageLocalized,

0
test Normal file
View File