Compare commits
2 Commits
master
...
language_b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2e1c2bfb3 | ||
|
|
30f5a4681e |
13
.vscode/settings.json
vendored
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
// Use Prettier as the default formatter for HTML, CSS, and PHP
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
||||||
"[html]": {
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
||||||
},
|
|
||||||
"[css]": {
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
||||||
},
|
|
||||||
"[php]": {
|
|
||||||
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
245
README.md
@@ -1,41 +1,228 @@
|
|||||||
### instructions
|
|
||||||
|
|
||||||
- start server with php, and browser-sync for auto reload :
|
start it with a server, like : `alive-server`
|
||||||
- `npm run dev`
|
- https://www.npmjs.com/package/alive-server
|
||||||
- setup instructions :
|
- install : `npm install -g alive-server`
|
||||||
- install apps : `sudo apt update && sudo apt install php-cli nodejs npm`
|
|
||||||
- verify : `php -v` & `node -v` & `npm -v`
|
|
||||||
- install dependencies : `npm ci`
|
|
||||||
- -> only for info, at project creation setup :
|
|
||||||
- run : `npm init -y && npm install --save-dev browser-sync`
|
|
||||||
- add in package.jsons > scripts : `php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files "**/*.php,**/*.css,**/*.js" --port 3000`
|
|
||||||
- `php -S localhost:8000` → starts PHP built-in server
|
|
||||||
- `&` → runs PHP server in the background (Linux/macOS)
|
|
||||||
- `browser-sync start --proxy localhost:8000` → proxies PHP server
|
|
||||||
- `--files "**/*.php,**/*.css,**/*.js"` → watches files for changes
|
|
||||||
- `--port 3000` → BrowserSync UI accessible at http://localhost:3000
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### ressources
|
difficulties :
|
||||||
|
|
||||||
html validator : https://validator.w3.org/nu
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### difficulties
|
|
||||||
|
|
||||||
- [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible)
|
- [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible)
|
||||||
- I finally decided to go with a structure like this :
|
- I finally decided to go with a structure like this :
|
||||||
```html
|
```html
|
||||||
<h1 aria-label="hugo lamy">
|
<h1 aria-label="hugo lamy">
|
||||||
<span aria-hidden="true" class="pre"> hugo (ascii) </span>
|
<span aria-hidden="true" class="pre">
|
||||||
<span aria-hidden="true" class="pre"> lamy (ascii) </span>
|
hugo (ascii)
|
||||||
</h1>
|
</span>
|
||||||
```
|
<span aria-hidden="true" class="pre">
|
||||||
|
lamy (ascii)
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
```
|
||||||
- [links accessibility](https://webaim.org/techniques/hypertext/)
|
- [links accessibility](https://webaim.org/techniques/hypertext/)
|
||||||
- [accessibility gone wild](https://webaim.org/articles/gonewild/)
|
- [accessibility gone wild](https://webaim.org/articles/gonewild/)
|
||||||
- [don't use title attribute](https://stackoverflow.com/questions/11161915/simple-tooltip-title-attribute/11163133#11163133)
|
- [don't use title attribute](https://stackoverflow.com/questions/11161915/simple-tooltip-title-attribute/11163133#11163133)
|
||||||
- [I thought title text improved accessibility. I was wrong.](https://silktide.com/blog/i-thought-title-text-improved-accessibility-i-was-wrong/)
|
- [I thought title text improved accessibility. I was wrong.](https://silktide.com/blog/i-thought-title-text-improved-accessibility-i-was-wrong/)
|
||||||
- [Things I learned by pretending to be blind for a week](https://medium.com/silktide/things-i-learned-by-pretending-to-be-blind-for-a-week-bf7b09f33eb4)
|
- [Things I learned by pretending to be blind for a week](https://medium.com/silktide/things-i-learned-by-pretending-to-be-blind-for-a-week-bf7b09f33eb4)
|
||||||
- [create the full screen hero section with the navbar under the title](https://stackoverflow.com/questions/77596781/in-css-how-to-make-a-sticky-navbar-after-the-header-in-an-hero-section/)
|
- [create the full screen hero section with the navbar under the title](https://stackoverflow.com/questions/77596781/in-css-how-to-make-a-sticky-navbar-after-the-header-in-an-hero-section/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
projects :
|
||||||
|
|
||||||
|
- [/] ljdp
|
||||||
|
- [ ] tchat transcendance
|
||||||
|
- setup docker without sudo on server
|
||||||
|
- remove authentification from project
|
||||||
|
- [ ] cube3d
|
||||||
|
- [ ] minishell
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
direction | width | child | child | child
|
||||||
|
| | position | main axis | second axis
|
||||||
|
................................................................
|
||||||
|
horizontal | content | left |-pack |-fit
|
||||||
|
vertical |-parent | right | grow | stretch
|
||||||
|
| | top | space |
|
||||||
|
| | bottom | spread |
|
||||||
|
| |-center | |
|
||||||
|
|
||||||
|
.<direction>-<width>-<position-[position]>-<main-axis>-<second-axis>
|
||||||
|
|
||||||
|
position :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left-top . . top . . right-top . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left . .-center . . right . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left-bottom . . bottom . . right-bottom. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
width :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . .
|
||||||
|
. . . . . . . . parent . .
|
||||||
|
. . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . content .
|
||||||
|
. . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
main axis :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . space . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . spread. . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .-pack . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . grow . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
second axis :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . .
|
||||||
|
. .-fit . . . . . .stretch. . . .
|
||||||
|
. . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
**v2 :**
|
||||||
|
|
||||||
|
|
||||||
|
direction | width | child | child | child
|
||||||
|
| | position | main axis | second axis
|
||||||
|
................................................................
|
||||||
|
horizontal | fit | left |-pack | begin
|
||||||
|
vertical | large | right | grow | end
|
||||||
|
| | top | space |-middle
|
||||||
|
| | bottom | spread | equal
|
||||||
|
| |-center | | stretch
|
||||||
|
|
||||||
|
.<direction>-<width>-<position-[position]>-<main-axis>-<second-axis>
|
||||||
|
|
||||||
|
position :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left-top . . top . . right-top . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left . .-center . . right . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . left-bottom . . bottom . . right-bottom. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
main axis :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . space . . . . . . justify-content
|
||||||
|
. . . . . . . . . . . . . . . . . : space-around
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . spread. . . . . . justify-content
|
||||||
|
. . . . . . . . . . . . . . . . . : space-between
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .-pack . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . grow . . . . . . child :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . grow: 1;
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
second axis :
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . begin . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. .-middle. . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . equal . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . .
|
||||||
|
. . end . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . .
|
||||||
|
. . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. .stretch. . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. . . . . . . .
|
||||||
|
. . . . . . . . . . . . . . . . .
|
||||||
|
. .
|
||||||
|
. . . . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,11 @@
|
|||||||
# projects
|
|
||||||
|
|
||||||
- [/] ljdp
|
|
||||||
- [ ] tchat transcendance
|
|
||||||
- setup docker without sudo on server
|
|
||||||
- remove authentification from project
|
|
||||||
- [ ] cube3d
|
|
||||||
- [ ] minishell
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# dots
|
|
||||||
|
|
||||||
·•◦●∘⬤
|
·•◦●∘⬤
|
||||||
|
|
||||||
- 183 : ·
|
- 183 : ·
|
||||||
- 8226 : •
|
- 8226 : •
|
||||||
- 8729 : ∙
|
- 8729 : ∙
|
||||||
- 9679 : ●
|
- 9679 : ●
|
||||||
- 9899 : ⚫
|
- 9899 : ⚫
|
||||||
- 11044 : ⬤
|
- 11044 : ⬤
|
||||||
|
|
||||||
- 57352
|
- 57352
|
||||||
@@ -40,443 +28,327 @@
|
|||||||
- 57446 (0xe066) U+E066 "uniE066" -
|
- 57446 (0xe066) U+E066 "uniE066" -
|
||||||
- 57447 (0xe067) U+E067 "uniE067" -
|
- 57447 (0xe067) U+E067 "uniE067" -
|
||||||
|
|
||||||
1229 \* (1638 + 410)
|
|
||||||
|
|
||||||
---
|
1229 * (1638 + 410)
|
||||||
|
|
||||||
# dots texts
|
|
||||||
|
|
||||||
```
|
|
||||||
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • ••••
|
|
||||||
• • • • • • • • • • • •• •• •• •• • • • • •
|
|
||||||
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • ••••
|
|
||||||
• • • • • • • • • • • • • • • • • • • •
|
|
||||||
• • • ••••• ••••• • • • • • • • • ••••• ••••• • •
|
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • ••••
|
||||||
|
• • • • • • • • • • • •• •• •• •• • • • • •
|
||||||
|
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • ••••
|
||||||
|
• • • • • • • • • • • • • • • • • • • •
|
||||||
|
• • • ••••• ••••• • • • • • • • • ••••• ••••• • •
|
||||||
|
|
||||||
••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
|
••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
|
||||||
• •• • • • • • • •• •• • • • • • • • • •
|
• •• • • • • • • •• •• • • • • • • • • •
|
||||||
• • • • •••• • • •••• • • • ••••• • • • • • • ••••
|
• • • • •••• • • •••• • • • ••••• • • • • • • ••••
|
||||||
• • •• • • • • • • • • • • • • • • • • •
|
• • •• • • • • • • • • • • • • • • • • •
|
||||||
••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
|
••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • •••• ••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
|
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • •••• ••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
|
||||||
• • • • • • • • • • • •• •• •• •• • • • • • • •• • • • • • • •• •• • • • • • • • • •
|
• • • • • • • • • • • •• •• •• •• • • • • • • •• • • • • • • •• •• • • • • • • • • •
|
||||||
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • •••• • • • • •••• • • •••• • • • ••••• • • • • • • ••••
|
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • •••• • • • • •••• • • •••• • • • ••••• • • • • • • ••••
|
||||||
• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •
|
• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •
|
||||||
• • • ••••• ••••• • • • • • • • • ••••• ••••• • • ••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
|
• • • ••••• ••••• • • • • • • • • ••••• ••••• • • ••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
------------------------------------------------------------
|
||||||
•
|
------------------------------------------------------------
|
||||||
•• ••••• •••••
|
------------------------------------------------------------
|
||||||
••• • • • • ••
|
------------------------------------------------------------
|
||||||
•••• • •••• • • • •
|
------------------------------------------------------------
|
||||||
•• •• • • • • • • • •
|
------------------------------------------------------------
|
||||||
•• •• • • • ••• •••••
|
|
||||||
•• •• • •• •
|
|
||||||
•• •• • •• •
|
•
|
||||||
•• ••••••••• • • •
|
•• ••••• •••••
|
||||||
|
••• • • • • ••
|
||||||
|
•••• • •••• • • • •
|
||||||
|
•• •• • • • • • • • •
|
||||||
|
•• •• • • • ••• •••••
|
||||||
|
•• •• • •• •
|
||||||
|
•• •• • •• •
|
||||||
|
•• ••••••••• • • •
|
||||||
•• •• • •••• ••••• •
|
•• •• • •••• ••••• •
|
||||||
•• •• • • • • • • •
|
•• •• • • • • • • •
|
||||||
•• •• • • • • •• • •
|
•• •• • • • • •• • •
|
||||||
•••• • •• •• •• •
|
•••• • •• •• •• •
|
||||||
••• • ••••••• • • •••
|
••• • ••••••• • • •••
|
||||||
•• • • •••••
|
•• • • •••••
|
||||||
•••••••• • • •
|
•••••••• • • •
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
------------------------------------------------------------
|
||||||
•
|
------------------------------------------------------------
|
||||||
•
|
------------------------------------------------------------
|
||||||
•• •
|
------------------------------------------------------------
|
||||||
• • •••••••
|
------------------------------------------------------------
|
||||||
• •• • •
|
------------------------------------------------------------
|
||||||
••••• • • • •
|
|
||||||
|
•
|
||||||
|
•
|
||||||
|
•• •
|
||||||
|
• • •••••••
|
||||||
|
• •• • •
|
||||||
|
••••• • • • •
|
||||||
• • • • • •
|
• • • • • •
|
||||||
• • • •• •
|
• • • •• •
|
||||||
• • • •
|
• • • •
|
||||||
• • ••
|
• • ••
|
||||||
••• • •
|
••• • •
|
||||||
• ••••• •
|
• ••••• •
|
||||||
• •
|
• •
|
||||||
•• •
|
•• •
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
•••• •
|
•••• •
|
||||||
• • •
|
• • •
|
||||||
• • •
|
• • •
|
||||||
• •••
|
• •••
|
||||||
•••••
|
•••••
|
||||||
• •
|
• •
|
||||||
• •
|
• •
|
||||||
• •
|
• •
|
||||||
••• •••
|
••• •••
|
||||||
• • • •
|
• • • •
|
||||||
• • • •
|
• • • •
|
||||||
•••• ••••
|
•••• ••••
|
||||||
• • • • •
|
• • • • •
|
||||||
••• • • •
|
••• • • •
|
||||||
••••••••
|
••••••••
|
||||||
•
|
•
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
------------------------------------------------------------
|
||||||
•
|
------------------------------------------------------------
|
||||||
•• •
|
------------------------------------------------------------
|
||||||
• • •
|
------------------------------------------------------------
|
||||||
•••••••••
|
------------------------------------------------------------
|
||||||
• • ••
|
------------------------------------------------------------
|
||||||
• • •
|
|
||||||
|
|
||||||
|
•
|
||||||
|
•• •
|
||||||
|
• • •
|
||||||
|
•••••••••
|
||||||
|
• • ••
|
||||||
|
• • •
|
||||||
••••• • • •
|
••••• • • •
|
||||||
• • •• •
|
• • •• •
|
||||||
• •
|
• •
|
||||||
• • ••
|
• • ••
|
||||||
• • • •
|
• • • •
|
||||||
• •• •
|
• •• •
|
||||||
••• ••••
|
••• ••••
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
• • • • ••••• ••••• • ••• • • • •
|
• • • • ••••• ••••• • ••• • • • •
|
||||||
• • • • • • • • • • •• •• • •
|
• • • • • • • • • • •• •• • •
|
||||||
••••• • • • •• • • • ••••• • • • •
|
••••• • • • •• • • • ••••• • • • •
|
||||||
• • • • • • • • • • • • • •
|
• • • • • • • • • • • • • •
|
||||||
• • ••••• ••••• ••••• ••••• • • • • •
|
• • ••••• ••••• ••••• ••••• • • • • •
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
```
|
------------------------------------------------------------
|
||||||
•••• •••• ••••• ••••• ••••• ••••• ••••• •••••
|
------------------------------------------------------------
|
||||||
• • • • • • • • • • •
|
------------------------------------------------------------
|
||||||
•••• •••• • • • •••• • • •••••
|
------------------------------------------------------------
|
||||||
• • • • • • • • • •
|
|
||||||
• • • ••••• •• ••••• ••••• • •••••
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
••• •••• ••••• •••• ••••• ••••• ••••• • • ••••• ••••• • • • • •
|
|
||||||
• • • • • • • • • • • • • • • • • •• ••
|
|
||||||
••••• •••• • • • •••• •••• • •• ••••• • • ••• • • • •
|
|
||||||
• • • • • • • • • • • • • • • • • • • •
|
|
||||||
• • •••• ••••• •••• ••••• • ••••• • • ••••• •• • • ••••• • •
|
|
||||||
|
|
||||||
• • ••••• •••• ••• •••• ••••• ••••• • • • • • • • • • • •••••
|
|
||||||
•• • • • • • • • • • • • • • • • • • • • • • •
|
|
||||||
• • • • • •••• • • •••• ••••• • • • • • • • • • •
|
|
||||||
• •• • • • • • • • • • • • • • • • • • • • •
|
|
||||||
• • ••••• • •• • • • ••••• • ••••• • • • • • • •••••
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
•••• •••• ••••• ••••• ••••• ••••• ••••• •••••
|
||||||
|
• • • • • • • • • • •
|
||||||
|
•••• •••• • • • •••• • • •••••
|
||||||
|
• • • • • • • • • •
|
||||||
|
• • • ••••• •• ••••• ••••• • •••••
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# CSS framework
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
direction | width | child | child | child
|
------------------------------------------------------------
|
||||||
| | position | main axis | second axis
|
------------------------------------------------------------
|
||||||
................................................................
|
------------------------------------------------------------
|
||||||
horizontal | content | left |-pack |-fit
|
------------------------------------------------------------
|
||||||
vertical |-parent | right | grow | stretch
|
------------------------------------------------------------
|
||||||
| | top | space |
|
------------------------------------------------------------
|
||||||
| | bottom | spread |
|
|
||||||
| |-center | |
|
|
||||||
|
|
||||||
.<direction>-<width>-<position-[position]>-<main-axis>-<second-axis>
|
|
||||||
|
|
||||||
position :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left-top . . top . . right-top . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left . .-center . . right . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left-bottom . . bottom . . right-bottom. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
width :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . .
|
|
||||||
. . . . . . . . parent . .
|
|
||||||
. . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . content .
|
|
||||||
. . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
main axis :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . space . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . spread. . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .-pack . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . grow . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
second axis :
|
••• •••• ••••• •••• ••••• ••••• ••••• • • ••••• ••••• • • • • •
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
• • • • • • • • • • • • • • • • • •• ••
|
||||||
. . . .
|
••••• •••• • • • •••• •••• • •• ••••• • • ••• • • • •
|
||||||
. . . . . . . . . . . . . .
|
• • • • • • • • • • • • • • • • • • • •
|
||||||
. . . . . . . . . . . . .
|
• • •••• ••••• •••• ••••• • ••••• • • ••••• •• • • ••••• • •
|
||||||
. . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . .
|
|
||||||
. .-fit . . . . . .stretch. . . .
|
|
||||||
. . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
---
|
• • ••••• •••• ••• •••• ••••• ••••• • • • • • • • • • • •••••
|
||||||
|
•• • • • • • • • • • • • • • • • • • • • • • •
|
||||||
|
• • • • • •••• • • •••• ••••• • • • • • • • • • •
|
||||||
|
• •• • • • • • • • • • • • • • • • • • • • •
|
||||||
|
• • ••••• • •• • • • ••••• • ••••• • • • • • • •••••
|
||||||
|
|
||||||
**v2 :**
|
|
||||||
|
|
||||||
direction | width | child | child | child
|
|
||||||
| | position | main axis | second axis
|
|
||||||
................................................................
|
|
||||||
horizontal | fit | left |-pack | begin
|
|
||||||
vertical | large | right | grow | end
|
|
||||||
| | top | space |-middle
|
|
||||||
| | bottom | spread | equal
|
|
||||||
| |-center | | stretch
|
|
||||||
|
|
||||||
.<direction>-<width>-<position-[position]>-<main-axis>-<second-axis>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
position :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left-top . . top . . right-top . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left . .-center . . right . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . left-bottom . . bottom . . right-bottom. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
main axis :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . space . . . . . . justify-content
|
|
||||||
. . . . . . . . . . . . . . . . . : space-around
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . spread. . . . . . justify-content
|
|
||||||
. . . . . . . . . . . . . . . . . : space-between
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .-pack . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . grow . . . . . . child :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . grow: 1;
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
|
|
||||||
second axis :
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . begin . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. .-middle. . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . equal . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . .
|
|
||||||
. . end . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . .
|
|
||||||
. . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. .stretch. . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. . . . . . . .
|
|
||||||
. . . . . . . . . . . . . . . . .
|
|
||||||
. .
|
|
||||||
. . . . . . . . . . . . . . . . . . .
|
|
||||||
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 231 B |
|
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 504 B |
|
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
BIN
docs/hugo_lamy_cv_2024_en.pdf
Normal file
BIN
docs/hugo_lamy_cv_2024_fr.pdf
Normal file
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 9.2 MiB After Width: | Height: | Size: 9.2 MiB |
|
Before Width: | Height: | Size: 938 KiB After Width: | Height: | Size: 938 KiB |
|
Before Width: | Height: | Size: 5.3 MiB After Width: | Height: | Size: 5.3 MiB |
368
index.html
Normal file
@@ -0,0 +1,368 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<!-- create "fake" favicon : https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests -->
|
||||||
|
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
||||||
|
<title>hugulumu.fr</title>
|
||||||
|
<meta name="description" content="site web de hugo lamy, developpeur">
|
||||||
|
<link href="./styles/reset.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/style.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/global.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/text.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/sections.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/mouses.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/banners.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/title.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/hero.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/projects.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/cv.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/infos.css" type="text/css" rel="stylesheet">
|
||||||
|
<link href="./styles/elements/language.css" type="text/css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
original : • 8226 U+2022
|
||||||
|
: 57442 U+E062
|
||||||
|
: 57443 U+E063
|
||||||
|
: 57444 U+E064
|
||||||
|
: 57445 U+E065
|
||||||
|
actual : 57446 U+E066
|
||||||
|
: 57447 U+E067
|
||||||
|
-->
|
||||||
|
|
||||||
|
<body id="body">
|
||||||
|
|
||||||
|
|
||||||
|
<input type="checkbox" id="language">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
I moved this outside the hero section,
|
||||||
|
so that i can change my mind to put it or not without having to change the grid rows height
|
||||||
|
-->
|
||||||
|
<div id="top_banner" class="banner banner_size_0 banner_speed_50 banner_reverse grid_full_width" aria-label="banner delimitation in ASCII art"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
HERO SECTION
|
||||||
|
-->
|
||||||
|
<section class="section hero" id="hero">
|
||||||
|
|
||||||
|
<label class="language_label" for="language">
|
||||||
|
<span id="fr"><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"></span>
|
||||||
|
<span id="en"><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1 aria-label="hugo lamy" id="name" class="title">
|
||||||
|
<span aria-hidden="true" class="pre pre_small">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<span aria-hidden="true" class="pre pre_small">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
<h1 aria-label="programmeur informatique" id="title" class="title">
|
||||||
|
<span aria-hidden="true" class="pre">
|
||||||
|
<span class="fr">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<span class="en">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
<p class="subtitle">
|
||||||
|
<span class="fr">méthodique, inventif, curieux</span>
|
||||||
|
<span class="en">methodical, inventive, curious</span>
|
||||||
|
</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_1 pre"></div></div>
|
||||||
|
<div class="banner banner_size_3 banner_speed_30 grid_full_width margin_bottom_small" aria-label="banner delimitation in ASCII art"></div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
CV
|
||||||
|
-->
|
||||||
|
<section class="section" id="cv">
|
||||||
|
|
||||||
|
<label class="language_label" for="language">
|
||||||
|
<span id="fr"><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"></span>
|
||||||
|
<span id="en"><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1 aria-label="cv" id="cv" class="title">
|
||||||
|
<span aria-hidden="true" class="pre">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<article class="cv margin_top_big">
|
||||||
|
<span class="fr"><a class="cv_download margin_bottom_big" href="docs/hugo_lamy_cv_2024_fr.pdf" target="_blank" rel="noopener noreferrer" title="link to a pdf version of this section CV">télécharger en pdf</a></span>
|
||||||
|
<span class="en"><a class="cv_download margin_bottom_big" href="docs/hugo_lamy_cv_2024_en.pdf" target="_blank" rel="noopener noreferrer" title="link to a pdf version of this section CV">download as pdf</a></span>
|
||||||
|
<h2>
|
||||||
|
<span class="fr">COMPÉTENCES</span>
|
||||||
|
<span class="en">SKILLS</span>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Langages : C, C++, bash, JavaScript, PHP, CSS, HTML</span>
|
||||||
|
<span class="en">Languages : C, C++, bash, JavaScript, PHP, CSS, HTML</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span>
|
||||||
|
<span class="en">Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Plus : emails, sending emails, receiving emails, deleting emails (the it crowd S01E01)</span>
|
||||||
|
<span class="en">Plus : emails, sending emails, receiving emails, deleting emails (the it crowd S01E01)</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Autres : magie, vélo, noeuds, mathématiques, politique</span>
|
||||||
|
<span class="en">Other : magic, bicycle, knots, mathematics, politic</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>
|
||||||
|
<span class="fr">EXPÉRIENCES</span>
|
||||||
|
<span class="en">WORK EXPERIENCES</span>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.carteprof.org" target="_blank" rel="noopener noreferrer" title="link to carteprof website"></a>
|
||||||
|
<span class="fr">, 2021 : Backend, plugin wordpress, authentification, sessions, paiements, roles et base de données</span>
|
||||||
|
<span class="en">, 2021 : Backend, plugin wordpress, authentification, sessions, payments, roles and database</span>
|
||||||
|
</li>
|
||||||
|
<li><a href="https://www.bloc-house.org" target="_blank" rel="noopener noreferrer" title="link to bloc-house website"></a>
|
||||||
|
<span class="fr">, 2021 : Full-stack, reprise d’un site en php et javascript</span>
|
||||||
|
<span class="en">, 2021 : Full-stack, redesigning a php and javascript site</span>
|
||||||
|
</li>
|
||||||
|
<li><a href="https://2022.lejourdesprofs.org/#programme" target="_blank" rel="noopener noreferrer" title="link to lejourdesprofs website"></a>
|
||||||
|
<span class="fr">, 2022 : Backend, plugin WordPress API GoogleMaps</span>
|
||||||
|
<span class="en">, 2022 : Backend, plugin WordPress API GoogleMaps</span>
|
||||||
|
</li>
|
||||||
|
<li><a href="https://kosmopolit.bitbucket.io" target="_blank" rel="noopener noreferrer" title="link to kosmopolit website"></a>
|
||||||
|
<span class="fr">, 2021 : Front-end, intégration en css atomique statique</span>
|
||||||
|
<span class="en">, 2021 : Front-end, static atomic css integration</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>
|
||||||
|
<span class="fr">FORMATION INFORMATIQUE</span>
|
||||||
|
<span class="en">COMPUTER SCIENCE EDUCATION</span>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++, système, algorithmie, réseaux)</span>
|
||||||
|
<span class="en">42 school, Paris, 2021-2022, common core - level 10 (C, C++, system, algorithms, networks)</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">SIMPLON, développeur full-stack JavaScript, 2018 (Javascript, Node.js, React.js, HTML, CSS)</span>
|
||||||
|
<span class="en">SIMPLON, developer full-stack JavaScript, 2018 (Javascript, Node.js, React.js, HTML, CSS)</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>
|
||||||
|
<span class="fr">FORMATION ARCHITECTURE</span>
|
||||||
|
<span class="en">ARCHITECTURE EDUCATION</span>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</span>
|
||||||
|
<span class="en">Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris, 2012, 6 mois), JC QUINTON (Paris 2014, 6 mois)</span>
|
||||||
|
<span class="en">3 internships : PERSPECTIVA (Houston, Texas, 2009, 3 months), AS (Paris, 2012, 6 months), JC QUINTON (Paris 2014, 6 months)</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>
|
||||||
|
<span class="fr">ENGAGEMENT ASSOCIATIF</span>
|
||||||
|
<span class="en">VOLUNTEER WORK</span>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Vulgarisation et recherche contraception testiculaire, ZEROMILLIONS, Paris, France, 2021-2024</span>
|
||||||
|
<span class="en">Popularisation and research into testicular contraception, ZEROMILLIONS, Paris, France, 2021-2024</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Aide au logement, travail, administratif, et projets de vie de personnes précaires, 2018-2024</span>
|
||||||
|
<span class="en">Help with housing, work, administration and life projects for people on the margins of society, 2018-2024</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE, 2020-2022</span>
|
||||||
|
<span class="en">Food distribution, MIGRANTS-WILSON & SECOURS POPULAIRE, 2020-2022</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56, Grande-Synthe, France, 2016</span>
|
||||||
|
<span class="en">Co-management of volunteers in a refugee camp, UTOPIA 56, Grande-Synthe, France, 2016</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_1 pre"></div></div>
|
||||||
|
<div class="banner banner_size_3 banner_speed_30 grid_full_width margin_bottom_small" aria-label="banner delimitation in ASCII art"></div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
PROJECTS
|
||||||
|
-->
|
||||||
|
<section id="projects" class="section">
|
||||||
|
|
||||||
|
<label class="language_label" for="language">
|
||||||
|
<span id="fr"><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"></span>
|
||||||
|
<span id="en"><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_3 pre"></div></div>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1 aria-label="projets">
|
||||||
|
<span aria-hidden="true" class="pre">
|
||||||
|
<span class="fr">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<span class="en">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="margin_bottom_big">
|
||||||
|
<p>
|
||||||
|
<span class="fr">code-sources de tous les projets : </span>
|
||||||
|
<span class="en">source code for all projects : </span>
|
||||||
|
</p>
|
||||||
|
<a href="https://bitbucket.org/hugogogo" target="_blank" rel="noopener noreferrer" title="link to git repositories on bitbucket"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 class="margin_bottom_big">
|
||||||
|
<span class="fr">quelques exemples de projets réalisés :</span>
|
||||||
|
<span class="en">some examples of completed projects :</span>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="projects_grid">
|
||||||
|
<figure class="project">
|
||||||
|
<a href="https://bitbucket.org/hugogogo/int_04_fdf" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket">
|
||||||
|
<img src="./docs/projects/fdf_pyramide_loop_square_2_light.gif"/>
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr">programme qui creer une representation 3D filaire d'une carte avec des points a differentes altitudes</span>
|
||||||
|
<span class="en">program that creates a 3D wireframe representation of a map with points at different altitudes</span>
|
||||||
|
</p>
|
||||||
|
<a href="https://bitbucket.org/hugogogo/int_04_fdf" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket"></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a href="https://bitbucket.org/hugogogo/int_10_cube3d" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket">
|
||||||
|
<img src="./docs/projects/cube3d_tour_with_map_square.gif"/>
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr">mini jeu video utilisant le raycasting pour creer une impression de deplacement dans un environnement 3D</span>
|
||||||
|
<span class="en">mini video game using raycasting to create the impression of movement in a 3D environment</span>
|
||||||
|
</p>
|
||||||
|
<a href="https://bitbucket.org/hugogogo/int_10_cube3d" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket"></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a href="https://bitbucket.org/hugogogo/2023_website_jipf" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket">
|
||||||
|
<img src="./docs/projects/ljdp_map_clusters_square_light.gif"/>
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr">plugin wordpress representant des evenements sur une carte avec des marqueurs et des filtres de tris</span>
|
||||||
|
<span class="en">wordpress plugin showing events on a map with markers and sorting filters</span>
|
||||||
|
</p>
|
||||||
|
<a href="https://bitbucket.org/hugogogo/2023_website_jipf" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket"></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a href="https://bitbucket.org/hugogogo/2022_website_kosmopolit" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket">
|
||||||
|
<img src="./docs/projects/kosmopolit_square.gif"/>
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr">site internet statique utilisant une structure uniquement en html et css</span>
|
||||||
|
<span class="en">static website using a structure based solely on html and css</span>
|
||||||
|
</p>
|
||||||
|
<a href="https://bitbucket.org/hugogogo/2022_website_kosmopolit" target="_blank" rel="noopener noreferrer" title="link to the source code on bitbucket"></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_2 pre"></div></div>
|
||||||
|
<div class="banner banner_size_3 banner_speed_20 banner_reverse grid_full_width" aria-label="banner delimitation in ASCII art"></div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
INFOS
|
||||||
|
-->
|
||||||
|
<section id="infos" class="footer section">
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<p>hugogogo@protonmail.com</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_4 pre"></div></div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
25
index.php
@@ -1,25 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="fr" dir="ltr">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta
|
|
||||||
name="viewport"
|
|
||||||
content="width=device-width, initial-scale=1, maximum-scale=1" />
|
|
||||||
<!-- create "fake" favicon : https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests -->
|
|
||||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=" />
|
|
||||||
<title>hugulumu.fr</title>
|
|
||||||
<meta name="description" content="site web de hugo lamy, developpeur" />
|
|
||||||
<base href="./src/" />
|
|
||||||
<link href="./styles/reset.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/base.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/text.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/mouses.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/banners.css" type="text/css" rel="stylesheet" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<?php include './src/body.php'; ?>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
1789
package-lock.json
generated
19
package.json
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "website_hugulumu",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "html validator : https://validator.w3.org/nu",
|
|
||||||
"main": "index.js",
|
|
||||||
"directories": {
|
|
||||||
"doc": "docs"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
|
||||||
"dev": "php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files \"**/*.php,**/*.css,**/*.js\" --port 3000"
|
|
||||||
},
|
|
||||||
"keywords": [],
|
|
||||||
"author": "",
|
|
||||||
"license": "ISC",
|
|
||||||
"devDependencies": {
|
|
||||||
"browser-sync": "^3.0.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
58
src/body.php
@@ -1,58 +0,0 @@
|
|||||||
<style>
|
|
||||||
section {
|
|
||||||
display: grid;
|
|
||||||
margin: 0px;
|
|
||||||
width: 100vw;
|
|
||||||
grid-template-columns: auto auto auto;
|
|
||||||
grid-auto-rows: auto;
|
|
||||||
grid-gap: 10px;
|
|
||||||
gap: 10px;
|
|
||||||
min-height: 100vh;
|
|
||||||
justify-items: center;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
>* {
|
|
||||||
/* starts at column 2 and spans 1 column */
|
|
||||||
grid-column: 2 / span 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
>.grid_full_width {
|
|
||||||
/* starts at column 1 and spans all 3 columns */
|
|
||||||
grid-column: 1 / span 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
place-content: center;
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
article {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner {
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<?php include 'modules/language.html'; ?>
|
|
||||||
|
|
||||||
<?php include 'modules/hero.html'; ?>
|
|
||||||
|
|
||||||
<?php include 'modules/cv.html'; ?>
|
|
||||||
|
|
||||||
<?php include 'modules/projects.html'; ?>
|
|
||||||
|
|
||||||
<?php include 'modules/infos.html'; ?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
@@ -1,461 +0,0 @@
|
|||||||
<style>
|
|
||||||
#cv_section {
|
|
||||||
header {
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cv_download {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cv {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: auto 1fr;
|
|
||||||
gap: 20px;
|
|
||||||
text-align: left;
|
|
||||||
width: auto;
|
|
||||||
max-width: 1100px;
|
|
||||||
margin: 100px 0px;
|
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
> *:last-child {
|
|
||||||
margin-bottom: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner {
|
|
||||||
margin: 0px 0px 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dashed {
|
|
||||||
border: 1px dashed black;
|
|
||||||
padding: 20px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin: 0px;
|
|
||||||
|
|
||||||
&:is(ul) {
|
|
||||||
padding-left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.split_columns {
|
|
||||||
display: grid;
|
|
||||||
grid-gap: 20px;
|
|
||||||
grid-auto-flow: row;
|
|
||||||
grid-template-rows: 1fr;
|
|
||||||
|
|
||||||
@media (min-width: 900px) {
|
|
||||||
grid-auto-flow: column;
|
|
||||||
grid-template-rows: auto 1fr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * *
|
|
||||||
* * * * * * * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
||||||
|
|
||||||
<section id="cv_section" class="section">
|
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="curriculum vitae">
|
|
||||||
<span aria-hidden="true" class="pre">
|
|
||||||
<span class="fr en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CV DOWNLOAD
|
|
||||||
-->
|
|
||||||
|
|
||||||
<div class="cv_download">
|
|
||||||
<p>
|
|
||||||
<span class="fr">télécharger </span>
|
|
||||||
<span class="en">download </span>
|
|
||||||
:
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_FR.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version graphical FR"
|
|
||||||
>
|
|
||||||
<span class="fr">[Graphique FR]</span>
|
|
||||||
<span class="en">[Graphical FR]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_EN.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version graphical EN"
|
|
||||||
>
|
|
||||||
<span class="fr">[Graphique EN]</span>
|
|
||||||
<span class="en">[Graphical EN]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_FR.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version ats FR"
|
|
||||||
>
|
|
||||||
<span class="fr">[ATS FR]</span>
|
|
||||||
<span class="en">[ATS FR]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_EN.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version ats EN"
|
|
||||||
>
|
|
||||||
<span class="fr">[ATS EN]</span>
|
|
||||||
<span class="en">[ATS EN]</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CV CONTENT
|
|
||||||
-->
|
|
||||||
|
|
||||||
<div class="cv">
|
|
||||||
<h2 class="dashed">
|
|
||||||
<span class="fr">COMPÉTENCES</span>
|
|
||||||
<span class="en">SKILLS</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<ul class="dashed">
|
|
||||||
<li>
|
|
||||||
<span class="fr en">
|
|
||||||
<b>Langages :</b> C, C++, TypeScript, JavaScript, PHP, bash, CSS, HTML
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr en">
|
|
||||||
<b>Backend / Cloud :</b> Node.js, NestJS, Firebase Cloud Functions,
|
|
||||||
MongoDB, MySQL
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Embarqué / IoT :</b> Linux, Zephyr RTOS, optimisation mémoire
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Embedded / IoT :</b> Linux, Zephyr RTOS, memory optimization
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"> <b>Outils :</b> Git, Docker </span>
|
|
||||||
<span class="en"> <b>Tools :</b> Git, Docker </span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr en">
|
|
||||||
<b>Web :</b> WordPress, Svelte.js, React.js, Next.js
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Méthodes :</b> TDD, Fonctionnelle, emails, sending emails,
|
|
||||||
receiving emails
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Practices :</b> TDD, Fonctional, emails, sending emails, receiving
|
|
||||||
emails
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Langues :</b> Français (natif), Anglais (courant)
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Languages :</b> French (native), English (fluent)
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2 class="dashed">
|
|
||||||
<span class="fr">EXPÉRIENCE</span>
|
|
||||||
<span class="en">EXPERIENCE</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<ul class="dashed">
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Developpeur Backend & Embarqué</b> - OSKEY (2024-présent) oskey.io/
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Backend & Embedded Developer</b> - OSKEY (2024-Present) oskey.io/
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Développement d'endpoints backend
|
|
||||||
<b>Firebase Cloud Functions</b> en TypeScript / NestJS pour la
|
|
||||||
communication avec des <b>appareils IoT</b>
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Design of <b>Firebase Cloud Functions</b> backend APIs in
|
|
||||||
TypeScript / NestJS for communication with <b>IoT devices</b>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Refactorisation du backend existant (<b>typage TypeScript</b>
|
|
||||||
strict, correction d'erreurs, amélioration de la maintenabilité)
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Refactored existing backend (strict <b>TypeScript typing</b>, bug
|
|
||||||
fixes, maintainability improvements)
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Développement d'helpers backend centralisant les
|
|
||||||
<b>contrôles d'accès</b>, la gestion des erreurs et l'accès aux
|
|
||||||
données en base
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Development of backend helpers that centralize
|
|
||||||
<b>access controls</b>, error handling, and access to documents in
|
|
||||||
the database
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Optimisation de la gestion mémoire d'un
|
|
||||||
<b>firmware IoT en C (Zephyr RTOS)</b>
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Optimized memory usage of an
|
|
||||||
<b>IoT firmware written in C (Zephyr RTOS)</b> running on
|
|
||||||
microcontrollers
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Mise en place de tests d'intégration backend et firmware
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Implemented backend and firmware integration tests
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Developpeur Fullstack</b> - FIPF (2024) carteprof.org/
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Fullstack Developer</b> - FIPF (2024) carteprof.org/
|
|
||||||
</span>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Développement d'un <b>plugin WordPress (PHP / MySQL)</b> pour la
|
|
||||||
gestion des paiements
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Developed a <b>WordPress plugin (PHP / MySQL)</b> for payment
|
|
||||||
management
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr"> Audit et correction de plugins tiers </span>
|
|
||||||
<span class="en"> Audited and fixed third-party plugins </span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr"> Automatisation des flux de paiement </span>
|
|
||||||
<span class="en"> Automated payment workflows </span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Developpeur Front-End</b> - KOSMOPOLIT (2023) kosmopolit/
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Front-End Developer</b> - KOSMOPOLIT (2023) kosmopolit/
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
Développement d'un <b>site static multilingue</b> (JavaScript,
|
|
||||||
HTML/CSS)
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Developed a <b>multilingual static website</b> (JavaScript,
|
|
||||||
HTML/CSS)
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2 class="dashed">
|
|
||||||
<span class="fr">FORMATION</span>
|
|
||||||
<span class="en">EDUCATION</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="dashed split_columns">
|
|
||||||
<p>
|
|
||||||
<span class="fr"> ECOLES </span>
|
|
||||||
<span class="en"> SCHOOLS </span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>École 42</b>, Paris, 2021-2023<br />Programmation système,
|
|
||||||
algorithmique, développement logiciel
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>École 42</b>, Paris, 2021-2023<br />Systems programming,
|
|
||||||
algorithms, software development
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>SIMPLON</b>, full-stack JavaScript, 2018<br />Formation intensive
|
|
||||||
en web Fullstack JavaScript
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>SIMPLON</b>, full-stack JavaScript, 2018<br />Intensive
|
|
||||||
JavaScript Fullstack Web Development Program
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<span class="fr"> ASSOCIATIF </span>
|
|
||||||
<span class="en"> VOLONTARY SECTOR </span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>ZEROMILLIONS</b>, 2021 - 2024<br />Vulgariser contraception
|
|
||||||
testiculaire
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>ZEROMILLIONS</b>, 2021 - 2024<br />Education on male
|
|
||||||
contraception
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>MIGRANTS-WILSON</b>, 2020 - 2022<br />Distribution de repas
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>MIGRANTS-WILSON</b>, 2020 - 2022<br />Food distribution
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>UTOPIA 56</b>, 2016<br />Bénévolat camp de réfugiés
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>UTOPIA 56</b>, 2016<br />Refugee camp volunteering
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 class="dashed">
|
|
||||||
<span class="fr">PROJETS</span>
|
|
||||||
<span class="en">PROJECTS</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<ul class="dashed">
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Programmation système (C)</b>, Implémentation d'un shell Unix avec
|
|
||||||
parsing de commandes, pipes, redirections, gestion des processus et
|
|
||||||
signaux
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Systems Programming (C)</b>, Implementation of a Unix shell with
|
|
||||||
command parsing, pipes, redirections, process management and signal
|
|
||||||
handling
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Protocoles réseau / HTTP (C++)</b>, Implémentation d'un serveur
|
|
||||||
HTTP/1.1 non bloquant avec support GET / POST / DELETE, et exécution
|
|
||||||
de CGI
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Network Protocols / HTTP (C++)</b>, Implementing a non-blocking
|
|
||||||
HTTP/1.1 server with support for GET / POST / DELETE, and CGI
|
|
||||||
execution
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">
|
|
||||||
<b>Algorithmes graphiques (C)</b>, Moteur graphique raycasting avec
|
|
||||||
rendu 3D à partir d'une carte 2D et gestion des déplacements FPS
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
<b>Graphics Algorithms (C)</b>, A raycasting graphics engine,
|
|
||||||
featuring 3D rendering based on a 2D map and FPS movement handling
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mouse_container">
|
|
||||||
<div class="mouse">
|
|
||||||
<div class="frames mouse_3 pre"></div>
|
|
||||||
</div>
|
|
||||||
<div class="skouik">
|
|
||||||
<button class="button button1"></button>
|
|
||||||
<span class="sound sound_2 sound_left">SKOUIK!</span>
|
|
||||||
|
|
||||||
<button class="button button2"></button>
|
|
||||||
<span class="sound sound_2 sound_right">SKOUIK!</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="banner banner_size_2 banner_reverse banner_speed_40 grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
</section>
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
<style>
|
|
||||||
/* specific banners */
|
|
||||||
#top_banner {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hero_section {
|
|
||||||
min-height: 100vh;
|
|
||||||
grid-template-columns: 1fr auto 1fr;
|
|
||||||
grid-template-rows: 1fr auto auto;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
/*
|
|
||||||
older safari doesn't not support flex gap
|
|
||||||
I could use a workaround :
|
|
||||||
https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari
|
|
||||||
but it doesn't work with wrap
|
|
||||||
so instead I make them in columns and add a margin
|
|
||||||
|
|
||||||
gap: 10px 30px;
|
|
||||||
*/
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
> *:first-child {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&#name {
|
|
||||||
margin: 30px 0px 20px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&#title {
|
|
||||||
margin: 20px 0px 20px 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.subtitle {
|
|
||||||
text-align: center;
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 700px;
|
|
||||||
margin: 0px auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * *
|
|
||||||
* * * * * * * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
I moved this outside the hero section,
|
|
||||||
so that i can change my mind to put it or not without having to change the grid rows height
|
|
||||||
-->
|
|
||||||
<div
|
|
||||||
id="top_banner"
|
|
||||||
class="banner banner_size_0 banner_speed_50 banner_reverse grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<section class="section hero" id="hero_section">
|
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="hugo lamy" id="name" class="title">
|
|
||||||
<span aria-hidden="true" class="pre pre_small">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span aria-hidden="true" class="pre pre_small">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="programmeur informatique" id="title" class="title">
|
|
||||||
<span aria-hidden="true" class="pre">
|
|
||||||
<span class="fr">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p class="subtitle">
|
|
||||||
<span class="fr">
|
|
||||||
Bonjour, je suis un développeur inventif, méthodique, et passionné par
|
|
||||||
l'informatique, et plus particulièrement le libre et l'open source.
|
|
||||||
J'aime explorer de nouvelles solutions techniques et comprendre les
|
|
||||||
systèmes en profondeur :-]
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Hello, I am a creative, methodical developer with a passion for computer
|
|
||||||
science, particularly free and open-source software. I enjoy exploring
|
|
||||||
new technical solutions and gaining a deep understanding of systems :-]
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="mouse_container">
|
|
||||||
<div class="mouse">
|
|
||||||
<div class="frames mouse_1 pre"></div>
|
|
||||||
</div>
|
|
||||||
<div class="skouik">
|
|
||||||
<button class="button button1"></button>
|
|
||||||
<span class="sound sound_1 sound_left">SKOUIK!</span>
|
|
||||||
|
|
||||||
<button class="button button2"></button>
|
|
||||||
<span class="sound sound_1 sound_right">SKOUIK!</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="banner banner_size_3 banner_speed_30 grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
</section>
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
<style>
|
|
||||||
#infos {
|
|
||||||
article {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
place-content: center;
|
|
||||||
|
|
||||||
a {
|
|
||||||
margin: 20px 0px;
|
|
||||||
|
|
||||||
&.mail {
|
|
||||||
&::before {
|
|
||||||
content: "📧";
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.site {
|
|
||||||
&::before {
|
|
||||||
content: "🌐";
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.git {
|
|
||||||
&::before {
|
|
||||||
content: "💾";
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * *
|
|
||||||
* * * * * * * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
||||||
|
|
||||||
<section id="infos" class="footer section">
|
|
||||||
<article>
|
|
||||||
<a href="mailto:hugogogo@protonmail.com" class="mail"
|
|
||||||
>hugogogo@protonmail.com</a
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
href="https://hugulumu.fr/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="site"
|
|
||||||
></a>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="git"
|
|
||||||
></a>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<div class="mouse_container">
|
|
||||||
<div class="mouse">
|
|
||||||
<div class="frames mouse_4 pre"></div>
|
|
||||||
</div>
|
|
||||||
<div class="skouik">
|
|
||||||
<button class="button button1">button1</button>
|
|
||||||
<span class="sound sound_4 sound_left">SKOUIK!</span>
|
|
||||||
|
|
||||||
<button class="button button2">button2</button>
|
|
||||||
<span class="sound sound_4 sound_right">SKOUIK!</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
<style>
|
|
||||||
input#language {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
label#language_label {
|
|
||||||
position: fixed;
|
|
||||||
top: 20px;
|
|
||||||
right: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
.flag {
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SWITCH FLAG
|
|
||||||
*/
|
|
||||||
#language {
|
|
||||||
&:not(:checked) + #language_label {
|
|
||||||
#fr {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#en {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:checked + #language_label {
|
|
||||||
#fr {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#en {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SWITCH LANGUAGE
|
|
||||||
*/
|
|
||||||
|
|
||||||
#language {
|
|
||||||
~ * .fr,
|
|
||||||
~ * .en {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(:checked) ~ * .fr {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:checked ~ * .en {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * *
|
|
||||||
* * * * * * * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
||||||
|
|
||||||
<input type="checkbox" id="language" />
|
|
||||||
<label id="language_label" for="language">
|
|
||||||
<span id="fr"
|
|
||||||
><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"
|
|
||||||
/></span>
|
|
||||||
<span id="en"
|
|
||||||
><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"
|
|
||||||
/></span>
|
|
||||||
</label>
|
|
||||||
@@ -1,220 +0,0 @@
|
|||||||
<style>
|
|
||||||
#projects {
|
|
||||||
header {
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.projects_grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(200px, auto));
|
|
||||||
grid-template-columns: repeat(2, minmax(100px, auto));
|
|
||||||
grid-template-columns: repeat(2, minmax(100px, 500px));
|
|
||||||
grid-gap: 20px;
|
|
||||||
|
|
||||||
figure figcaption {
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 100px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mouse {
|
|
||||||
margin-top: 100px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * * *
|
|
||||||
* * * * * * * * *
|
|
||||||
* * * * * * * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * *
|
|
||||||
* * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
||||||
|
|
||||||
<section id="projects" class="section">
|
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="projets">
|
|
||||||
<span aria-hidden="true" class="pre">
|
|
||||||
<span class="fr">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="">
|
|
||||||
<p>
|
|
||||||
<span class="fr">Code source : </span>
|
|
||||||
<span class="en">Source code : </span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to git repositories"
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 class="">
|
|
||||||
<span class="fr">Quelques exemples de projets :</span>
|
|
||||||
<span class="en">Some project examples :</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="projects_grid">
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_04_fdf/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/fdf_pyramide_loop_square_2_light.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr">
|
|
||||||
Un programme qui transforme des cartes 2D (avec lignes de niveau et
|
|
||||||
points d'altitude) en une représentation 3D filaire, pour une
|
|
||||||
exploration visuelle intuitive.
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
A program that converts 2D maps (with contour lines and altitude
|
|
||||||
points) into a 3D wireframe representation for intuitive visual
|
|
||||||
exploration.
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_04_fdf/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/cube3d_tour_with_map_square.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr">
|
|
||||||
Un jeu utilisant le raycasting pour simuler un déplacement immersif
|
|
||||||
dans un environnement 3D.
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
A game using raycasting to create an immersive 3D movement
|
|
||||||
experience.
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/ljdp_map_clusters_square_light.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr">
|
|
||||||
Un plugin WordPress affichant des événements sur une carte
|
|
||||||
interactive, avec des marqueurs et un système de filtrage
|
|
||||||
multi-catégories complexe (catégories exclusives ou superposées).
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
A WordPress plugin that displays events on an interactive map with
|
|
||||||
markers and a complex multi-category filtering system (exclusive or
|
|
||||||
overlapping categories).
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/kosmopolit_square.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr">
|
|
||||||
Un site entièrement conçu en HTML et CSS, sans dépendances externes,
|
|
||||||
pour une performance optimale.
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
A website built entirely with HTML and CSS, no external
|
|
||||||
dependencies, for optimal performance.
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mouse_container">
|
|
||||||
<div class="mouse">
|
|
||||||
<div class="frames mouse_2 pre"></div>
|
|
||||||
</div>
|
|
||||||
<div class="skouik">
|
|
||||||
<button class="button button1"></button>
|
|
||||||
<span class="sound sound_3 sound_left">SKOUIK!</span>
|
|
||||||
|
|
||||||
<button class="button button2"></button>
|
|
||||||
<span class="sound sound_3 sound_right">SKOUIK!</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="banner banner_size_3 banner_speed_20 banner_reverse grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
</section>
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
.banner {
|
|
||||||
width: 100%;
|
|
||||||
--base_banner_height: 24px;
|
|
||||||
--banner_height: var(--base_banner_height); /*default*/
|
|
||||||
--base_dot_size: 4.2vw;
|
|
||||||
--dot_size: var(--base_dot_size); /*default*/
|
|
||||||
height: min(var(--dot_size), var(--banner_height));
|
|
||||||
|
|
||||||
background-image: url(../docs/banners/banner_1.svg); /*default*/
|
|
||||||
background-size: contain;
|
|
||||||
background-repeat: repeat;
|
|
||||||
background-position-x: 0%;
|
|
||||||
|
|
||||||
animation-duration: 10s; /*default*/
|
|
||||||
animation-name: slide_svg;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
animation-direction: normal;
|
|
||||||
}
|
|
||||||
@keyframes slide_svg {
|
|
||||||
from {
|
|
||||||
background-position-x: 0%;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
background-position-x: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* speeds
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
.banner_pause {
|
|
||||||
animation-play-state: paused;
|
|
||||||
}
|
|
||||||
.banner_reverse {
|
|
||||||
animation-direction: reverse;
|
|
||||||
}
|
|
||||||
.banner_speed_10 {
|
|
||||||
animation-duration: 10s;
|
|
||||||
}
|
|
||||||
.banner_speed_20 {
|
|
||||||
animation-duration: 20s;
|
|
||||||
}
|
|
||||||
.banner_speed_30 {
|
|
||||||
animation-duration: 30s;
|
|
||||||
}
|
|
||||||
.banner_speed_40 {
|
|
||||||
animation-duration: 40s;
|
|
||||||
}
|
|
||||||
.banner_speed_50 {
|
|
||||||
animation-duration: 50s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* sizes
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
.banner_size_0 {
|
|
||||||
background-image: url(../docs/banners/banner_0.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 1);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 1);
|
|
||||||
}
|
|
||||||
.banner_size_00 {
|
|
||||||
background-image: url(../docs/banners/banner_00.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 1);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 1);
|
|
||||||
}
|
|
||||||
.banner_size_1 {
|
|
||||||
background-image: url(../docs/banners/banner_1.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 1);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 1);
|
|
||||||
}
|
|
||||||
.banner_size_2 {
|
|
||||||
background-image: url(../docs/banners/banner_2.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 2);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 2);
|
|
||||||
}
|
|
||||||
.banner_size_3 {
|
|
||||||
background-image: url(../docs/banners/banner_3.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 3);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 3);
|
|
||||||
}
|
|
||||||
.banner_size_4 {
|
|
||||||
background-image: url(../docs/banners/banner_4.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 4);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 4);
|
|
||||||
}
|
|
||||||
.banner_size_5 {
|
|
||||||
background-image: url(../docs/banners/banner_5.svg);
|
|
||||||
--banner_height: calc(var(--base_banner_height) * 5);
|
|
||||||
--dot_size: calc(var(--base_dot_size) * 5);
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
:root {
|
|
||||||
--base_font_size: 62.5%;
|
|
||||||
}
|
|
||||||
html {
|
|
||||||
font-size: var(--base_font_size);
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
overflow-x: clip;
|
|
||||||
margin: auto;
|
|
||||||
width: fit-content;
|
|
||||||
background-color: #f6f6f6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
|
|
||||||
/* Animate scrolling only if users don’t prefer reduced motion */
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
html {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add some spacing between the target and the top of the viewport */
|
|
||||||
:target {
|
|
||||||
scroll-margin-top: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,454 +0,0 @@
|
|||||||
.mouse_container {
|
|
||||||
margin: auto;
|
|
||||||
width: fit-content;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.mouse {
|
|
||||||
margin: auto;
|
|
||||||
width: fit-content;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.frames {
|
|
||||||
position: relative;
|
|
||||||
animation: mouse_move infinite 2s normal steps(4);
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
position: relative;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
position: absolute;
|
|
||||||
top: 100%;
|
|
||||||
left: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.skouik {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
/* Style the word to be hidden by default */
|
|
||||||
.sound {
|
|
||||||
position: absolute;
|
|
||||||
top: -30px;
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
&.sound_1 {
|
|
||||||
left: 170px;
|
|
||||||
}
|
|
||||||
&.sound_2 {
|
|
||||||
left: 80px;
|
|
||||||
}
|
|
||||||
&.sound_3 {
|
|
||||||
top: 40px;
|
|
||||||
left: 30px;
|
|
||||||
}
|
|
||||||
&.sound_4 {
|
|
||||||
top: -40px;
|
|
||||||
left: 80px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
position: absolute;
|
|
||||||
top: 1px;
|
|
||||||
left: 1px;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Show the word when the button is focused */
|
|
||||||
&.button:focus + .sound {
|
|
||||||
animation-duration: 3s;
|
|
||||||
animation-timing-function: forwards;
|
|
||||||
}
|
|
||||||
&:focus + .sound_left {
|
|
||||||
animation-name: sound_animation_left;
|
|
||||||
}
|
|
||||||
&:focus + .sound_right {
|
|
||||||
animation-name: sound_animation_right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes sound_animation_left {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
top: -300px;
|
|
||||||
left: 0px;
|
|
||||||
transform: rotate(-120deg);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes sound_animation_right {
|
|
||||||
0% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
top: -400px;
|
|
||||||
left: 250px;
|
|
||||||
transform: rotate(90deg);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* using 'transform' instead of 'top', because 'top' needs
|
|
||||||
* the parent to have an explicit height
|
|
||||||
* but in this case its height is according to the children
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@keyframes mouse_move {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0%);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateY(-400%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* MOUSE 1 *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
.mouse_1::before {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
.mouse_1::after {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* MOUSE 2 *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
.mouse_2::before {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
.mouse_2::after {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* MOUSE 3 *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
.mouse_3::before {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
.mouse_3::after {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* MOUSE 4 *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
.mouse_4::before {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
.mouse_4::after {
|
|
||||||
content: "\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
";
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
body * {
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
input,
|
|
||||||
button,
|
|
||||||
textarea,
|
|
||||||
select {
|
|
||||||
/* Remove built-in form typography styles */
|
|
||||||
font: inherit;
|
|
||||||
}
|
|
||||||
button:focus,
|
|
||||||
button:active {
|
|
||||||
outline: none;
|
|
||||||
box-shadow: none;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
}
|
|
||||||
img,
|
|
||||||
picture,
|
|
||||||
video,
|
|
||||||
canvas,
|
|
||||||
svg {
|
|
||||||
display: block;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
li,
|
|
||||||
p,
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
/* Avoid text overflows
|
|
||||||
overflow-wrap: break-word;
|
|
||||||
*/
|
|
||||||
overflow-wrap: anywhere;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* style details elements */
|
|
||||||
details summary {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
details summary > * {
|
|
||||||
/* allow to put h1 or anything inside the summary without breaking the line */
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
script,
|
|
||||||
style {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "notomono";
|
|
||||||
src: url("./fonts/notomono/NotoMono-Dot.woff") format("woff");
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "notosansmono_bold";
|
|
||||||
src: url("./fonts/notomono/Noto-Sans-Mono-Bold.ttf.woff") format("woff");
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
body,
|
|
||||||
pre {
|
|
||||||
font-family: "notomono", monospace;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 500px) {
|
|
||||||
html {
|
|
||||||
font-size: calc(var(--base_font_size) * 1.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ul {
|
|
||||||
display: block;
|
|
||||||
list-style-type: "• ";
|
|
||||||
padding-left: 25px;
|
|
||||||
/*
|
|
||||||
list-style-position: inside;
|
|
||||||
*/
|
|
||||||
list-style-position: outside;
|
|
||||||
}
|
|
||||||
li {
|
|
||||||
display: list-item;
|
|
||||||
}
|
|
||||||
li::marker {
|
|
||||||
font-size: 1.8rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:empty::after {
|
|
||||||
content: attr(href);
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
margin: 30px 0px;
|
|
||||||
font-size: 2.25rem;
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
margin: 30px 0px;
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
margin: 20px 0px;
|
|
||||||
font-size: 1.75rem;
|
|
||||||
}
|
|
||||||
h4 {
|
|
||||||
margin: 20px 0px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
h5 {
|
|
||||||
margin: 10px 0px;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
h6 {
|
|
||||||
margin: 10px 0px;
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pre,
|
|
||||||
pre {
|
|
||||||
display: flex;
|
|
||||||
white-space: pre;
|
|
||||||
line-height: 0.8;
|
|
||||||
font-size: min(2.1vw, 1rem);
|
|
||||||
}
|
|
||||||
.pre_small {
|
|
||||||
font-size: min(1.5vw, 0.7rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
b {
|
|
||||||
font-family: "notosansmono_bold", "notomono", monospace;
|
|
||||||
/* font-weight: 900; */
|
|
||||||
}
|
|
||||||
102
styles/elements/banners.css
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
--base_banner_height: 24px;
|
||||||
|
--banner_height: var(--base_banner_height); /*default*/
|
||||||
|
--base_dot_size: 4.2vw;
|
||||||
|
--dot_size: var(--base_dot_size); /*default*/
|
||||||
|
height: min(var(--dot_size), var(--banner_height));
|
||||||
|
|
||||||
|
background-image: url(../../docs/banners/banner_1.svg); /*default*/
|
||||||
|
background-size: contain;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position-x: 0%;
|
||||||
|
|
||||||
|
animation-duration: 10s; /*default*/
|
||||||
|
animation-name: slide_svg;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-direction: normal;
|
||||||
|
}
|
||||||
|
@keyframes slide_svg {
|
||||||
|
from {background-position-x: 0%;}
|
||||||
|
to {background-position-x: 100%;}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* speeds
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.banner_pause {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
.banner_reverse {
|
||||||
|
animation-direction: reverse;
|
||||||
|
}
|
||||||
|
.banner_speed_10 {
|
||||||
|
animation-duration: 10s;
|
||||||
|
}
|
||||||
|
.banner_speed_20 {
|
||||||
|
animation-duration: 20s;
|
||||||
|
}
|
||||||
|
.banner_speed_30 {
|
||||||
|
animation-duration: 30s;
|
||||||
|
}
|
||||||
|
.banner_speed_40 {
|
||||||
|
animation-duration: 40s;
|
||||||
|
}
|
||||||
|
.banner_speed_50 {
|
||||||
|
animation-duration: 50s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sizes
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.banner_size_0 {
|
||||||
|
background-image: url(../../docs/banners/banner_0.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 1);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 1);
|
||||||
|
}
|
||||||
|
.banner_size_00 {
|
||||||
|
background-image: url(../../docs/banners/banner_00.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 1);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 1);
|
||||||
|
}
|
||||||
|
.banner_size_1 {
|
||||||
|
background-image: url(../../docs/banners/banner_1.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 1);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 1);
|
||||||
|
}
|
||||||
|
.banner_size_2 {
|
||||||
|
background-image: url(../../docs/banners/banner_2.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 2);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 2);
|
||||||
|
}
|
||||||
|
.banner_size_3 {
|
||||||
|
background-image: url(../../docs/banners/banner_3.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 3);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 3);
|
||||||
|
}
|
||||||
|
.banner_size_4 {
|
||||||
|
background-image: url(../../docs/banners/banner_4.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 4);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 4);
|
||||||
|
}
|
||||||
|
.banner_size_5 {
|
||||||
|
background-image: url(../../docs/banners/banner_5.svg);
|
||||||
|
--banner_height: calc(var(--base_banner_height) * 5);
|
||||||
|
--dot_size: calc(var(--base_dot_size) * 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* specific banners */
|
||||||
|
#top_banner {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
15
styles/elements/cv.css
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
.cv {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: auto;
|
||||||
|
max-width: 900px;
|
||||||
|
margin-bottom: 100px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv .cv_download {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
15
styles/elements/hero.css
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#hero {
|
||||||
|
min-height: 100vh;
|
||||||
|
grid-template-columns: 1fr auto 1fr;
|
||||||
|
/*
|
||||||
|
* WIP : trying to find a solution to have both qualities :
|
||||||
|
* - elements are spread across the page vertically ('hugo lamy developpeur' is not compacted on top)
|
||||||
|
* - the details element 'voir le cv' dont jump when we unroll it
|
||||||
|
*
|
||||||
|
grid-template-rows: 1fr auto 1fr;
|
||||||
|
*/
|
||||||
|
grid-template-rows: 1fr 1fr auto;
|
||||||
|
}
|
||||||
|
#hero .subtitle {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
6
styles/elements/infos.css
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#infos article {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
place-content: center;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
51
styles/elements/language.css
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
input#language {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.language_label {
|
||||||
|
position: absolute;
|
||||||
|
grid-column: end;
|
||||||
|
top: 20px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.language_label .flag {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FR
|
||||||
|
*/
|
||||||
|
input#language:not(:checked) ~ * .language_label #fr {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
input#language:checked ~ * .language_label #fr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
input#language:not(:checked) ~ * span.fr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
input#language:checked ~ * span.fr {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EN
|
||||||
|
*/
|
||||||
|
input#language:not(:checked) ~ * .language_label #en {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
input#language:checked ~ * .language_label #en {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
input#language:not(:checked) ~ * span.en {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
input#language:checked ~ * span.en {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
36
styles/elements/mouses.css
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
@import "./mouses/mouse_1.css";
|
||||||
|
@import "./mouses/mouse_2.css";
|
||||||
|
@import "./mouses/mouse_3.css";
|
||||||
|
@import "./mouses/mouse_4.css";
|
||||||
|
|
||||||
|
.mouse {
|
||||||
|
margin: auto;
|
||||||
|
width: fit-content;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.mouse .frames {
|
||||||
|
position: relative;
|
||||||
|
animation: mouse_move infinite 2s normal steps(4);
|
||||||
|
}
|
||||||
|
.mouse .frames::before {
|
||||||
|
position: relative;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
.mouse .frames::after {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* using 'transform' instead of 'top', because 'top' needs
|
||||||
|
* the parent to have an explicit height
|
||||||
|
* but in this case its height is according to the children
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@keyframes mouse_move {
|
||||||
|
0% {transform: translateY(0%);}
|
||||||
|
100% {transform: translateY(-400%);}
|
||||||
|
}
|
||||||
|
|
||||||
72
styles/elements/mouses/mouse_1.css
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
.mouse_1::before {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
|
.mouse_1::after {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
72
styles/elements/mouses/mouse_2.css
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
.mouse_2::before {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
|
.mouse_2::after {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
64
styles/elements/mouses/mouse_3.css
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
.mouse_3::before {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
|
.mouse_3::after {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
64
styles/elements/mouses/mouse_4.css
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
.mouse_4::before {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
|
.mouse_4::after {
|
||||||
|
content:'\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
';
|
||||||
|
}
|
||||||
22
styles/elements/projects.css
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#projects {
|
||||||
|
header {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#projects .projects_grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, auto));
|
||||||
|
grid-template-columns: repeat(2, minmax(100px, auto));
|
||||||
|
grid-template-columns: repeat(2, minmax(100px, 500px));
|
||||||
|
grid-gap: 20px;
|
||||||
|
}
|
||||||
|
#projects .projects_grid figure {
|
||||||
|
}
|
||||||
|
#projects .projects_grid figure figcaption {
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#projects .mouse {
|
||||||
|
margin-top: 100px;
|
||||||
|
}
|
||||||
26
styles/elements/title.css
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
#name {
|
||||||
|
margin:30px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
#title {
|
||||||
|
margin:20px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
/*
|
||||||
|
older safari doesn't not support flex gap
|
||||||
|
I could use a workaround :
|
||||||
|
https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari
|
||||||
|
but it doesn't work with wrap
|
||||||
|
so instead I make them in columns and add a margin
|
||||||
|
|
||||||
|
gap: 10px 30px;
|
||||||
|
*/
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title > *:first-child {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 601 B After Width: | Height: | Size: 601 B |
|
Before Width: | Height: | Size: 609 B After Width: | Height: | Size: 609 B |
|
Before Width: | Height: | Size: 609 B After Width: | Height: | Size: 609 B |
|
Before Width: | Height: | Size: 605 B After Width: | Height: | Size: 605 B |
|
Before Width: | Height: | Size: 607 B After Width: | Height: | Size: 607 B |
|
Before Width: | Height: | Size: 609 B After Width: | Height: | Size: 609 B |
|
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 612 B |
107
styles/global.css
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
/* https://stackoverflow.com/questions/62107074/how-to-hide-a-text-and-make-it-accessible-by-screen-reader */
|
||||||
|
.visually-hidden {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
position: absolute !important;
|
||||||
|
height: 1px;
|
||||||
|
width: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
|
||||||
|
clip: rect(1px, 1px, 1px, 1px); /* maybe deprecated but we need to support legacy browsers */
|
||||||
|
clip-path: inset(50%); /* modern browsers, clip-path works inwards from each corner */
|
||||||
|
white-space: nowrap; /* added line to stop words getting smushed together (as they go onto separate lines and some screen readers do not understand line feeds as a space) */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.margin_top_small {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.margin_bottom_small {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin_top_big {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
.margin_bottom_big {
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
DATA-FLEX
|
||||||
|
|
||||||
|
direction width childrens childrens childrens
|
||||||
|
position main axis cross axis
|
||||||
|
|
||||||
|
[/]-horizontal [/]-parent [/]-center [/]-pack [/]-fit
|
||||||
|
[/] vertical [/] content [/] left [/]-wrap [/] stretch
|
||||||
|
[/] right [/] nowrap
|
||||||
|
[/] top [/] grow
|
||||||
|
[/] bottom [/] space
|
||||||
|
[/] spread
|
||||||
|
[/] gap
|
||||||
|
-> for GAP, you can custom the value with 'style="--gap:?px;"'
|
||||||
|
*/
|
||||||
|
[data-flex] {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: auto;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
[data-flex] > * {
|
||||||
|
flex-grow: 0;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
direction : -horizontal- vertical
|
||||||
|
*/
|
||||||
|
[data-flex~="horizontal"] { flex-direction: row; }
|
||||||
|
[data-flex~="vertical"] { flex-direction: column; }
|
||||||
|
/*
|
||||||
|
width : -parent- content
|
||||||
|
*/
|
||||||
|
[data-flex~="parent"] {
|
||||||
|
width: 100%;
|
||||||
|
width: -moz-available; /* WebKit-based browsers will ignore this. */
|
||||||
|
width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
|
||||||
|
width: fill-available;
|
||||||
|
}
|
||||||
|
[data-flex~="content"] { width: fit-content; }
|
||||||
|
/*
|
||||||
|
position : -center- left right top bottom
|
||||||
|
*/
|
||||||
|
[data-flex~="left"] ,[data-flex~="vertical"][data-flex~="left"] { align-items: flex-start; text-align: left; }
|
||||||
|
[data-flex~="right"] ,[data-flex~="vertical"][data-flex~="right"] { align-items: flex-end; text-align: right; }
|
||||||
|
[data-flex~="top"] ,[data-flex~="vertical"][data-flex~="top"] { justify-content: flex-start; }
|
||||||
|
[data-flex~="bottom"] ,[data-flex~="vertical"][data-flex~="bottom"] { justify-content: flex-end; }
|
||||||
|
[data-flex~="center"] ,[data-flex~="vertical"][data-flex~="center"] { align-items: center; text-align: center; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="left"] { justify-content: flex-start; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="right"] { justify-content: flex-end; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="top"] { align-items: flex-start; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="bottom"] { align-items: flex-end; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="center"] { }
|
||||||
|
/*
|
||||||
|
main axis : -pack- space spread grow wrap gap
|
||||||
|
*/
|
||||||
|
[data-flex~="pack"] > * ,[data-flex~="vertical"][data-flex~="pack"] > * { flex-grow: 0; }
|
||||||
|
[data-flex~="space"] ,[data-flex~="vertical"][data-flex~="space"] { justify-content: space-around; }
|
||||||
|
[data-flex~="spread"] ,[data-flex~="vertical"][data-flex~="spread"] { justify-content: space-between; }
|
||||||
|
[data-flex~="grow"] > * ,[data-flex~="vertical"][data-flex~="grow"] > * { flex-grow: 1; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="pack"] > * { flex-grow: 0; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="space"] { justify-content: space-around; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="spread"] { justify-content: space-between; }
|
||||||
|
[data-flex~="horizontal"][data-flex~="grow"] > * { flex-grow: 1; }
|
||||||
|
[data-flex~="wrap"] { flex-wrap: wrap; }
|
||||||
|
/*
|
||||||
|
cross axis : -fit- stretch
|
||||||
|
*/
|
||||||
|
[data-flex~="horizontal"][data-flex~="fit"],
|
||||||
|
[data-flex~="vertical"][data-flex~="fit"] { }
|
||||||
|
[data-flex~="horizontal"][data-flex~="stretch"],
|
||||||
|
[data-flex~="vertical"][data-flex~="stretch"] { align-items: stretch; }
|
||||||
|
|
||||||
|
|
||||||
29
styles/reset.css
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
body * {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
input, button, textarea, select {
|
||||||
|
/* Remove built-in form typography styles */
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
img, picture, video, canvas, svg {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
li, p, h1, h2, h3, h4, h5, h6 {
|
||||||
|
/* Avoid text overflows
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
*/
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* style details elements */
|
||||||
|
details summary {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
details summary > * {
|
||||||
|
/* allow to put h1 or anything inside the summary without breaking the line */
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
39
styles/sections.css
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
section {
|
||||||
|
display: grid;
|
||||||
|
position: relative;
|
||||||
|
margin: 0px;
|
||||||
|
width: 100vw;
|
||||||
|
grid-template-columns: auto auto auto;
|
||||||
|
grid-auto-rows: auto;
|
||||||
|
grid-gap: 10px;
|
||||||
|
gap: 10px;
|
||||||
|
min-height: 100vh;
|
||||||
|
justify-items: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
section header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
place-content: center;
|
||||||
|
}
|
||||||
|
section header h1 {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
section article {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
section > * {
|
||||||
|
grid-column: 2 / span 1;
|
||||||
|
}
|
||||||
|
section > .grid_full_width {
|
||||||
|
grid-column: 1 / span 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
section .banner {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
31
styles/style.css
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
:root {
|
||||||
|
--base_font_size: 62.5%;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
font-size: var(--base_font_size);
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
overflow-x: clip;
|
||||||
|
margin: auto;
|
||||||
|
width: fit-content;
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
}
|
||||||
|
script, style {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
margin: 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
|
||||||
|
/* Animate scrolling only if users don’t prefer reduced motion */
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add some spacing between the target and the top of the viewport */
|
||||||
|
:target {
|
||||||
|
scroll-margin-top: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
60
styles/text.css
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "notomono";
|
||||||
|
src:
|
||||||
|
url("./fonts/notomono/NotoMono-Dot.woff") format("woff");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
body, pre {
|
||||||
|
font-family: "notomono", monospace;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
html {
|
||||||
|
font-size: calc(var(--base_font_size) * 1.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
display: block;
|
||||||
|
list-style-type: "• ";
|
||||||
|
padding-left: 25px;
|
||||||
|
/*
|
||||||
|
list-style-position: inside;
|
||||||
|
*/
|
||||||
|
list-style-position: outside;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: list-item;
|
||||||
|
}
|
||||||
|
li::marker {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:empty::after {
|
||||||
|
content: attr(href);
|
||||||
|
}
|
||||||
|
h1 { margin: 30px 0px; font-size: 2.25rem; }
|
||||||
|
h2 { margin: 30px 0px; font-size: 2.0rem; }
|
||||||
|
h3 { margin: 20px 0px; font-size: 1.75rem; }
|
||||||
|
h4 { margin: 20px 0px; font-size: 1.5rem; }
|
||||||
|
h5 { margin: 10px 0px; font-size: 1.25rem; }
|
||||||
|
h6 { margin: 10px 0px; font-size: 1.0rem; }
|
||||||
|
|
||||||
|
.pre, pre {
|
||||||
|
display: flex;
|
||||||
|
white-space: pre;
|
||||||
|
line-height: 0.8;
|
||||||
|
font-size: min(2.1vw, 1.0rem);
|
||||||
|
}
|
||||||
|
.pre_small {
|
||||||
|
font-size: min(1.5vw, 0.7rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||