36 Commits

Author SHA1 Message Date
Hugo LAMY
704483f6e6 wip adding php include 2026-03-17 14:09:41 +01:00
Hugo LAMY
cd97001cc0 update cvs and css 2026-03-15 15:38:17 +01:00
hugo LAMY
dfc4f55709 updated presentation text 2026-03-04 15:57:24 +01:00
hugo LAMY
2c8ae62e4b fix hero section 2026-03-04 15:54:51 +01:00
hugo LAMY
eacd26e532 adding cv header 2026-03-04 15:50:18 +01:00
hugo LAMY
8ac697b6e3 fix dot words alignment 2026-03-04 14:55:24 +01:00
hugo LAMY
f43afab585 update cv unfolded and mail is link 2026-03-04 14:41:01 +01:00
asus
0764207780 changed pdf name to avoid cach 2024-06-19 16:35:37 +02:00
asus
d040932217 new version of cvs 2024-06-19 15:32:07 +02:00
asus
c633026376 changed errors spoted by luck 2024-06-19 15:21:25 +02:00
asus
de4be9e248 added validator address in reamde 2024-06-15 11:48:40 +02:00
asus
b52842c254 small fixe on spaces in hero section 2024-06-08 12:08:58 +02:00
asus
5b1ea933f6 moved and add all cv into cvs 2024-06-08 11:22:59 +02:00
asus
ecabfcc392 removed htaccess content, it was not working as intended 2024-06-08 11:15:23 +02:00
asus
d9a6269f13 trying htaccess to prevent access to certain content 2024-06-08 11:13:53 +02:00
asus
c08dff5171 added margin auto to subtitle in hero and cv section 2024-06-07 23:32:58 +02:00
asus
0b55e2cdb3 removed the default open details 2024-06-07 23:29:00 +02:00
asus
9edec3714e added all cv section in both french and english, plus the phrase 2024-06-07 23:28:08 +02:00
asus
e27344b350 started to fill new content into cv 2024-06-06 12:14:58 +02:00
asus
d72c5ea2de changed hero title height from auto to 50vh to take more consistant space 2024-06-02 19:20:34 +02:00
asus
92b75b3239 reverse last commit to have the cv as a details on top hero section again 2024-06-02 19:17:17 +02:00
asus
2e03ec0ae9 Revert "fixed text error in download pdf"
to have the cv in hero section again

This reverts commit 69b111b1e2.
2024-06-02 19:15:58 +02:00
asus
32ea6d6cf4 mv cv in its own section 2024-06-02 12:24:53 +02:00
asus
69b111b1e2 fixed text error in download pdf 2024-05-30 09:13:39 +02:00
asus
3f6eb8e78b fixed error duplicate class for download 2024-05-28 11:23:28 +02:00
asus
4642f33e0a fixed error in cv download id 2024-05-28 11:21:54 +02:00
asus
af9543e1f1 added space before downlad cv 2024-05-28 11:15:32 +02:00
asus
801576af7a changed flag from position fixed to absolute so it does not follow the page while scrolling 2024-05-28 11:13:34 +02:00
asus
f414587ec3 changed language text into flags 2024-05-28 11:11:39 +02:00
asus
1056f8ea5c translation done 2024-05-28 10:22:07 +02:00
asus
ad737c57dc translate cv 2024-05-28 10:18:30 +02:00
asus
fdd16bbd3e wip almost all texts have been duplicated, still need to translate 2024-05-27 17:25:13 +02:00
asus
0c7860fee9 version compatible with old browser not supporting has 2024-05-27 17:21:48 +02:00
asus
d545c2ef28 first version of switch button for language 2024-05-27 17:12:30 +02:00
asus
e21e5b8938 changed svg files to work with older browsers for the pre white-space, using old xml:space instead 2024-05-27 15:42:56 +02:00
asus
680c5808a3 added break word on all letters for links 2024-05-27 14:23:09 +02:00
68 changed files with 2233 additions and 1114 deletions

10
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
// Use Prettier as the default formatter for HTML and CSS
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}

225
README.md
View File

@@ -1,7 +1,17 @@
html validator : https://validator.w3.org/nu
start it with a server, like : `alive-server`
- https://www.npmjs.com/package/alive-server
- install : `npm install -g alive-server`
---
- start server with php, and nodemon for auto reload :
- `npm run dev`
- setup :
- install apps : `sudo apt update && sudo apt install php-cli nodejs npm`
- verify : `php -v` & `node -v` & `npm -v`
- -> only for info, at project creation setup :
- run : `npm init -y && npm install --save-dev nodemon`
- add in package.jsons > scripts : `"dev": "nodemon --exec 'php -S localhost:8000' --ext php,html"`
- install dependencies : `npm ci`
---
@@ -11,12 +21,8 @@ difficulties :
- I finally decided to go with a structure like this :
```html
<h1 aria-label="hugo lamy">
<span aria-hidden="true" class="pre">
hugo (ascii)
</span>
<span aria-hidden="true" class="pre">
lamy (ascii)
</span>
<span aria-hidden="true" class="pre"> hugo (ascii) </span>
<span aria-hidden="true" class="pre"> lamy (ascii) </span>
</h1>
```
- [links accessibility](https://webaim.org/techniques/hypertext/)
@@ -25,204 +31,3 @@ difficulties :
- [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)
- [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. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. .
. . . . . . . . . . . . . . . . . . .

Binary file not shown.

View File

@@ -1,243 +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">
<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">
</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">
<!--
maybe move this outside, so that i can change my mind to put it or not wihtout having to change the grid rows height ?
or else, if all rows can be the same, like 1fr or auto, it will also works
-->
<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">
<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>
</h1>
<p class="subtitle">méthodique, inventif, curieux</p>
</header>
<details class="cv margin_top_big">
<summary>
<h2 class="close">voir le CV</h2>
<h2 class="open">cacher le CV</h2>
</summary>
<a id="cv_download" class="margin_bottom_big" href="docs/hugo_lamy_cv_2024.pdf" target="_blank" rel="noopener noreferrer" title="link to a pdf version of this section CV">télécharger en pdf</a>
<h2>COMPÉTENCES</h2>
<ul>
<li>Langages : C, C++, bash, JavaScript, PHP, CSS, HTML</li>
<li>Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</li>
<li>Plus : emails, sending emails, receiving emails, deleting emails (the it crowd S01E01)</li>
<li>Autres : magie, vélo, noeuds, mathématiques, politique</li>
</ul>
<h2>EXPÉRIENCES</h2>
<ul>
<li><a href="https://www.carteprof.org" target="_blank" rel="noopener noreferrer" title="link to carteprof website"></a>, 2021 : Backend, plugin wordpress, authentification, sessions, paiements, roles et bdd</li>
<li><a href="https://www.bloc-house.org" target="_blank" rel="noopener noreferrer" title="link to bloc-house website"></a>, 2021 : Full-stack, reprise dun site en php et javascript</li>
<li><a href="https://2022.lejourdesprofs.org/#programme" target="_blank" rel="noopener noreferrer" title="link to lejourdesprofs website"></a>, 2022 : Backend, plugin WordPress API GoogleMaps</li>
<li><a href="https://kosmopolit.bitbucket.io" target="_blank" rel="noopener noreferrer" title="link to kosmopolit website"></a>, 2021 : Front-end, intégration en css atomique statique</li>
</ul>
<h2>FORMATION INFORMATIQUE</h2>
<ul>
<li>École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++, système, algorithime, réseaux)</li>
<li>SIMPLON, développeur full-stack JavaScript, 2018 (Javascript, Node.js, React.js, HTML, CSS)</li>
</ul>
<h2>FORMATION ARCHITECTURE</h2>
<ul>
<li>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</li>
<li>3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris, 2012, 6 mois), JC QUINTON (Paris 2014, 6 mois)</li>
</ul>
<h2>ENGAGEMENT ASSOCIATIF</h2>
<ul>
<li>Vulgarisation et recherche contraception testiculaire, ZEROMILLIONS, Paris, France, 2021-2024</li>
<li>Aide au logement, travail, administratif, et projets de vie de personnes précaires, 2018-2024</li>
<li>Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE, 2020-2022</li>
<li>Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56, Grande-Synthe, France, 2016</li>
</ul>
</details>
<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">
<div class="mouse"><div class="frames mouse_3 pre"></div></div>
<header>
<h1 aria-label="projets">
<span aria-hidden="true" class="pre">
      
         
       
        
       
</span>
</h1>
</header>
<div class="margin_bottom_big">
<p>code-sources de tous les projets : </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">quelques exemples de projets réalisés :</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>programme qui creer une representation 3D filaire d'une carte avec des points a differentes altitudes</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>mini jeu video utilisant le raycasting pour creer une impression de deplacement dans un environnement 3D</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>plugin wordpress representant des evenements sur une carte avec des marqueurs et des filtres de tris</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>site internet statique utilisant une structure uniquement en html et css</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>
<!--
<article class="project">
<p>description</p>
<img src="./docs/projects/fdf_pyramide_2.gif"/>
<img src="./docs/projects/fdf_demo.gif"/>
</article>
<article class="project">
<p>description</p>
<img src="./docs/projects/cube3d_raycasting.gif"/>
<img src="./docs/projects/cube3d_image.gif"/>
</article>
<article class="project">
<p>description</p>
<img src="./docs/projects/ljdp_map_clusters.gif"/>
<img src="./docs/projects/ljdp_map_filters.gif"/>
</article>
-->
<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>

33
index.php Normal file
View File

@@ -0,0 +1,33 @@
<!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/global_style.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" />
<link href="./styles/language.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" />
</head>
<body>
<?php include './src/body.php'; ?>
</body>
</html>

View File

@@ -1,3 +1,15 @@
# projects
- [/] ljdp
- [ ] tchat transcendance
- setup docker without sudo on server
- remove authentification from project
- [ ] cube3d
- [ ] minishell
---
# dots
·•◦●∘⬤
@@ -28,25 +40,13 @@
- 57446 (0xe066) U+E066 "uniE066" - 
- 57447 (0xe067) U+E067 "uniE067" - 
1229 \* (1638 + 410)
1229 * (1638 + 410)
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
---
# dots texts
```
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • ••••
• • • • • • • • • • • •• •• •• •• • • • • •
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • ••••
@@ -61,7 +61,6 @@
             
                   
                 
@@ -74,15 +73,9 @@
                   
               
```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • •••• ••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
• • • • • • • • • • • •• •• •• •• • • • • • • •• • • • • • • •• •• • • • • • • • • •
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • •••• • • • • •••• • • •••• • • • ••••• • • • • • • ••••
@@ -97,15 +90,9 @@
                                       
                                
```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
•• ••••• •••••
••• • • • • ••
@@ -124,7 +111,6 @@
•••••••• • • •
  
     
@@ -142,14 +128,9 @@
   
   
```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
•• •
@@ -180,15 +161,9 @@
 
 
```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
•••• •
• • •
• • •
@@ -224,15 +199,9 @@

```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
•• •
• • •
@@ -262,15 +231,9 @@
  
 
```
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
• • • • ••••• ••••• • ••• • • • •
• • • • • • • • • • •• •• • •
••••• • • • •• • • • ••••• • • • •
@@ -284,23 +247,9 @@
             
          
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
```
•••• •••• ••••• ••••• ••••• ••••• ••••• •••••
• • • • • • • • • • •
•••• •••• • • • •••• • • •••••
@@ -314,17 +263,9 @@
         
        
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
```
```
••• •••• ••••• •••• ••••• ••••• ••••• • • ••••• ••••• • • • • •
• • • • • • • • • • • • • • • • • •• ••
••••• •••• • • • •••• •••• • •• ••••• • • ••• • • • •
@@ -351,4 +292,191 @@
                     
                 
```
---
# 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. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. .
. . . . . . . . . . . . . . . . . . .

390
package-lock.json generated Normal file
View File

@@ -0,0 +1,390 @@
{
"name": "website_hugulumu",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "website_hugulumu",
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
"nodemon": "^3.1.14"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/balanced-match": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/brace-expansion": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/ignore-by-default": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
"integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
"dev": true,
"license": "ISC"
},
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/minimatch": {
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
"integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"brace-expansion": "^5.0.2"
},
"engines": {
"node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
"license": "MIT"
},
"node_modules/nodemon": {
"version": "3.1.14",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz",
"integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==",
"dev": true,
"license": "MIT",
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^4",
"ignore-by-default": "^1.0.1",
"minimatch": "^10.2.1",
"pstree.remy": "^1.1.8",
"semver": "^7.5.3",
"simple-update-notifier": "^2.0.0",
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.5"
},
"bin": {
"nodemon": "bin/nodemon.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/nodemon"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pstree.remy": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
"integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
"dev": true,
"license": "MIT"
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/semver": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/simple-update-notifier": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
"integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
"dev": true,
"license": "MIT",
"dependencies": {
"semver": "^7.5.3"
},
"engines": {
"node": ">=10"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/touch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
"integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
"dev": true,
"license": "ISC",
"bin": {
"nodetouch": "bin/nodetouch.js"
}
},
"node_modules/undefsafe": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
"integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
"dev": true,
"license": "MIT"
}
}
}

19
package.json Normal file
View File

@@ -0,0 +1,19 @@
{
"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": "nodemon --exec 'php -S localhost:8000' --ext php,html"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^3.1.14"
}
}

725
src/body.php Normal file
View File

@@ -0,0 +1,725 @@
<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>
<!--
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">
<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"><div class="frames mouse_1 pre"></div></div>
<div
class="banner banner_size_3 banner_speed_30 grid_full_width"
aria-label="banner delimitation in ASCII art"
></div>
</section>
<!--
CV
-->
<section id="cv" class="section">
<header>
<!-- prettier-ignore -->
<h1 aria-label="curriculum vitae">
<span aria-hidden="true" class="pre">
<span class="fr en">
  
  
  
  
 
</span>
</span>
</h1>
</header>
<div class="cv">
<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>
<h2>
<span class="fr">EXPÉRIENCES</span>
<span class="en">WORK EXPERIENCES</span>
</h2>
<div
class="banner banner_size_0 banner_pause"
aria-label="banner delimitation in ASCII art"
></div>
<h4>
<span class="fr">web full-stack</span>
<span class="en">web full-stack</span>
</h4>
<ul>
<li>
<span class="fr"
>BLOC-HOUSE: reprise du site d'une association d'artistes
(fullstack, php, javascript, html, css), 2023</span
>
<span class="en"
>BLOC-HOUSE: takeover of an artists' association website
(fullstack, php, javascript, html, css), 2023</span
>
</li>
<li>
<span class="fr"
>TRANSCENDENCE: chat en ligne avec gestions des comptes et
notifications (fullstack, node.js, nest.js, websocket, svelte,
PostgreSQL)</span
>
<span class="en"
>TRANSCENDENCE: online chat with account management and
notifications (fullstack, node.js, nest.js, websocket, svelte,
PostgreSQL)</span
>
</li>
<li>
<span class="fr"
>FIPF: plugin qui gère les paiements, les roles, corrige les
autres plugins et des actions front-end (fullstack, js, php, bdd),
2024</span
>
<span class="en"
>FIPF: plugin that manages payments, roles, corrects other plugins
and front-end actions (fullstack, js, php, bdd), 2024</span
>
</li>
<li>
<span class="fr"
>JIPF: utilise les API GoogleMaps pour afficher des données
dynamiques sur une carte avec des filtres, 2022</span
>
<span class="en"
>JIPF: uses GoogleMaps APIs to display dynamic data on a map, with
interactive filters</span
>
</li>
<li>
<span class="fr"
>KOSMOPOLIT: front-end, integration d'un site statique pour une
association de litterature, (html, css atomique), 2022</span
>
<span class="en"
>KOSMOPOLIT: front-end, integration of a static site for a
literature association, (html, atomic css), 2022</span
>
</li>
</ul>
<h4>
<span class="fr">devops</span>
<span class="en">devops</span>
</h4>
<ul>
<li>
<span class="fr"
>WEBSERV: création d'un serveur web non-bloquant en multiplexage,
capable de gérer des requetes http et envoyer du contenu (c++,
linux sockets)</span
>
<span class="en"
>WEBSERV: creation of a non-blocking multiplexing web server
capable of managing http requests and sending content (c++, linux
sockets)</span
>
</li>
<li>
<span class="fr"
>MINITALK: utiliser les signaux système de linux pour creer une
communication en code ascii entre deux processus</span
>
<span class="en"
>MINITALK: using linux system signals to create ascii code
communication between two processes</span
>
</li>
<li>
<span class="fr"
>INCEPTION: création de zéro d'ima-ges docker pour deployer
wordpress avec encription SSL (docker compose, mariaDB, NGINX,
Wordpress)</span
>
<span class="en"
>INCEPTION: creating docker images from scratch to deploy
wordpress with SSL encription (docker compose, mariaDB, NGINX,
Wordpress)</span
>
</li>
</ul>
<h4>
<span class="fr">game</span>
<span class="en">game</span>
</h4>
<ul>
<li>
<span class="fr"
>CUBE 3D: jeu à la premiere personne utilisant le raycasting pour
la 3d et les textures, et le clavier pour bouger (c,
trigonométrie, inputs)</span
>
<span class="en"
>CUBE 3D: first-person game using raycasting for 3d and textures,
and the keyboard for movement (c, trigonometry, inputs)</span
>
</li>
<li>
<span class="fr"
>FDF: modélisation spatiale de formes en courbes de niveau à
partir de cartes (c, trigonometrie, inputs)</span
>
<span class="en"
>FDF: spatial modelling of contour lines from maps with keyboard
control (c, trigonometrie, inputs)</span
>
</li>
</ul>
<h4>
<span class="fr">system</span>
<span class="en">system</span>
</h4>
<ul>
<li>
<span class="fr"
>MINISHELL: créer un shell capable de parser des prompts, exécuter
des programmes, et réagir aux signaux (c, bash, signals, fork,
pipe, readline)</span
>
<span class="en"
>MINISHELL: creating a shell capable of parsing prompts, executing
programs, and listening to signals (c, bash, signals, fork, pipe,
readline)</span
>
</li>
<li>
<span class="fr"
>CONTAINERS: recoder 3 conteneurs c++ avec les iterateurs,
surcharges, et templates : map, vector, stack</span
>
<span class="en"
>CONTAINERS: recoding c++ containers with iterators, overloads and
templates : map, vector, stack</span
>
</li>
<li>
<span class="fr"
>PUSHSWAP: algorithmes de tris avec deux piles et des mouvements
limités aux extrémités des piles (c)</span
>
<span class="en"
>PUSHSWAP: sorting algorithms with two stacks and limited movement
at the ends of the stacks (c)</span
>
</li>
</ul>
<h2>
<span class="fr">COMPÉTENCES</span>
<span class="en">SKILLS</span>
</h2>
<div
class="banner banner_size_0 banner_pause"
aria-label="banner delimitation in ASCII art"
></div>
<h4>
<span class="fr">hard skills</span>
<span class="en">hard skills</span>
</h4>
<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>
</ul>
<h4>
<span class="fr">soft skills</span>
<span class="en">soft skills</span>
</h4>
<ul>
<li>
<span class="fr">capacité d'apprentissage et autonomie</span>
<span class="en">learning ability, and autonomy</span>
</li>
<li>
<span class="fr">attention aux détails, patience</span>
<span class="en">attention to details, patience</span>
</li>
<li>
<span class="fr">adaptabilité et resolution de problemes</span>
<span class="en">adaptability and problem-solving</span>
</li>
<li>
<span class="fr">recevoir des feedbacks</span>
<span class="en">receiving feedback</span>
</li>
</ul>
<h2>
<span class="fr">FORMATIONS</span>
<span class="en">EDUCATIONS</span>
</h2>
<div
class="banner banner_size_0 banner_pause"
aria-label="banner delimitation in ASCII art"
></div>
<h4>
<span class="fr">informatique</span>
<span class="en">computer science</span>
</h4>
<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>
<h4>
<span class="fr">architecture</span>
<span class="en">architecture</span>
</h4>
<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">PERSONNEL</span>
<span class="en">PERSONAL</span>
</h2>
<div
class="banner banner_size_0 banner_pause"
aria-label="banner delimitation in ASCII art"
></div>
<h4>
<span class="fr">engagement associatif</span>
<span class="en">volunteer work</span>
</h4>
<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>
<h4>
<span class="fr">centre d'intérêts</span>
<span class="en">interests</span>
</h4>
<ul>
<li>
<span class="fr">vélo</span>
<span class="en">bicycle</span>
</li>
<li>
<span class="fr">magie</span>
<span class="en">magic tricks</span>
</li>
<li>
<span class="fr">noeuds</span>
<span class="en">knots</span>
</li>
<li>
<span class="fr">mathématiques et physiques</span>
<span class="en">mathematics and physics</span>
</li>
<li>
<span class="fr">politique</span>
<span class="en">politic</span>
</li>
</ul>
</div>
<div class="mouse"><div class="frames mouse_3 pre"></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>
<!--
PROJECTS
-->
<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-sources de tous les projets : </span>
<span class="en">source code for all projects : </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 réalisés :</span>
<span class="en">some examples of completed projects :</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"
>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://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"
>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://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"
>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://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"
>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://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"><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>
<a href="mailto:hugogogo@protonmail.com">hugogogo@protonmail.com</a>
</article>
<div class="mouse"><div class="frames mouse_4 pre"></div></div>
</section>

View File

@@ -16,14 +16,16 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -16,15 +16,17 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -16,16 +16,18 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -16,19 +16,21 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -16,22 +16,24 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -16,25 +16,27 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -16,28 +16,30 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

5
src/docs/flags/fr.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#000091" d="M0 0h213.3v480H0z"/>
<path fill="#e1000f" d="M426.7 0H640v480H426.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<path fill="#ffffff" d="M0 0h640v480H0z"/>
<path fill="#232323" d="M0 0h213.3v480H0z"/>
<path fill="#727272" d="M426.7 0H640v480H426.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 234 B

7
src/docs/flags/gb.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
<path fill="#012169" d="M0 0h640v480H0z"/>
<path fill="#FFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
<path fill="#C8102E" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
<path fill="#FFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
<path fill="#C8102E" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
</svg>

After

Width:  |  Height:  |  Size: 504 B

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
<path fill="#262626" d="M0 0h640v480H0z"/>
<path fill="#FFFFFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
<path fill="#666666" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
<path fill="#FFFFFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
<path fill="#666666" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

View File

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

Before

Width:  |  Height:  |  Size: 9.2 MiB

After

Width:  |  Height:  |  Size: 9.2 MiB

View File

Before

Width:  |  Height:  |  Size: 938 KiB

After

Width:  |  Height:  |  Size: 938 KiB

View File

Before

Width:  |  Height:  |  Size: 5.3 MiB

After

Width:  |  Height:  |  Size: 5.3 MiB

61
src/modules/hero.html Normal file
View File

@@ -0,0 +1,61 @@
<section class="section hero" id="hero">
<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"><div class="frames mouse_1 pre"></div></div>
<div
class="banner banner_size_3 banner_speed_30 grid_full_width"
aria-label="banner delimitation in ASCII art"
></div>
</section>

101
src/styles/banners.css Normal file
View File

@@ -0,0 +1,101 @@
.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%;
}

View File

@@ -0,0 +1,38 @@
#cv {
header {
height: 300px;
}
}
.cv {
display: flex;
flex-direction: column;
text-align: left;
width: auto;
max-width: 900px;
> *:last-child {
margin-bottom: 100px;
}
.cv_download {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 30px;
}
.banner {
margin: 0px 0px 50px;
}
h2 {
margin-top: 100px;
}
ul {
border: 1px dashed black;
padding: 20px;
padding-left: 40px;
}
}

View File

@@ -0,0 +1,48 @@
#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' don't jump when we unroll it
*
grid-template-rows: 1fr auto 1fr;
grid-template-rows: auto auto 1fr;
*/
grid-template-rows: 50vh 1fr;
.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;
}
}

View File

Before

Width:  |  Height:  |  Size: 601 B

After

Width:  |  Height:  |  Size: 601 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 605 B

After

Width:  |  Height:  |  Size: 605 B

View File

Before

Width:  |  Height:  |  Size: 607 B

After

Width:  |  Height:  |  Size: 607 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 612 B

After

Width:  |  Height:  |  Size: 612 B

248
src/styles/global_style.css Normal file
View File

@@ -0,0 +1,248 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* *
* *
* *
* *
* RESET CSS *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
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;
}
script,
style {
display: none;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* *
* *
* *
* *
* GLOBAL CSS *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
: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 dont 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;
}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* *
* *
* *
* *
* TEXT CSS *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@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: 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;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* *
* *
* *
* *
* SECTIONS GLOBAL CSS *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
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;
> * {
grid-column: 2 / span 1;
}
> .grid_full_width {
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;
}
}

59
src/styles/language.css Normal file
View File

@@ -0,0 +1,59 @@
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: inline;
}
#en {
display: none;
}
}
&:checked + #language_label {
#fr {
display: none;
}
#en {
display: inline;
}
}
}
/*
* SWITCH LANGUAGE
*/
#language {
~ * .fr,
~ * .en {
display: none;
}
&:not(:checked) ~ * .en {
display: inline;
}
&:checked ~ * .fr {
display: inline;
}
}

View File

@@ -1,102 +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);
}
/* specific banners */
#top_banner {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
}

View File

@@ -1,37 +0,0 @@
.cv {
width: auto;
max-width: 900px;
}
.cv {
display: flex;
text-align: left;
}
.cv summary {
position: relative;
list-style-position: outside;
list-style-type: "▸ ";
font-size: 1.8rem;
margin: auto;
width: fit-content;
}
.cv summary .open {
display: none;
}
.cv summary .close {
display: inline;
}
.cv[open] summary {
list-style-type: "▾ ";
}
.cv[open] summary .open {
display: inline;
}
.cv[open] summary .close {
display: none;
}
.cv > *:last-child {
margin-bottom: 100px;
}

View File

@@ -1,21 +0,0 @@
#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: auto auto 1fr;
}
#hero .subtitle {
text-align: center;
}
#hero .cv {
}
#hero .cv #cv_download {
margin-top: 20px;
text-align: center;
}

View File

@@ -1,26 +0,0 @@
#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;
}

View File

@@ -1,29 +0,0 @@
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;
}

View File

@@ -1,38 +0,0 @@
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;
}
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;
}

View File

@@ -1,31 +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;
}
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 dont 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;
}
}

View File

@@ -1,57 +0,0 @@
@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);
}