diff --git a/public/assets/documents/CV.pdf b/public/assets/documents/CV.pdf new file mode 100644 index 0000000..7089f50 Binary files /dev/null and b/public/assets/documents/CV.pdf differ diff --git a/src/App.css b/src/App.css index e5ed727..328e7bd 100644 --- a/src/App.css +++ b/src/App.css @@ -1,4 +1,3 @@ #root { margin: 0 auto; - padding: 2rem; } \ No newline at end of file diff --git a/src/components/Experiences.jsx b/src/components/Experiences.jsx index 7f3fd03..4e64680 100644 --- a/src/components/Experiences.jsx +++ b/src/components/Experiences.jsx @@ -32,7 +32,7 @@ function Experiences() { return (
-

Expériences

+

Experiences

{experiencesData.map((exp, index) => ( diff --git a/src/components/Home.jsx b/src/components/Home.jsx index ee109e6..b8a47b2 100644 --- a/src/components/Home.jsx +++ b/src/components/Home.jsx @@ -1,10 +1,21 @@ +import '../styles/Home.css'; +import Background from "./thirdParty/Background.jsx"; + function Home() { return ( -
-

Home

-
- ) + +
+ +

Hello, I'm Giovanni Josserand

+

Junior Developer

+

+ Passionate about development, I am currently looking + for an opportunity to put my skills into practice and continue learning. +

+ Download my CV + +
+ ); } - -export default Home \ No newline at end of file +export default Home; diff --git a/src/components/Projects.jsx b/src/components/Projects.jsx index dfc30b0..6331d78 100644 --- a/src/components/Projects.jsx +++ b/src/components/Projects.jsx @@ -5,7 +5,7 @@ function Projects() { return (

Projects

- +
diff --git a/src/components/SingleExperience.jsx b/src/components/SingleExperience.jsx index 67f9c2d..733ae2c 100644 --- a/src/components/SingleExperience.jsx +++ b/src/components/SingleExperience.jsx @@ -4,9 +4,9 @@ function SingleExperience({ experience, whichSide }) { return (
-
+

{experience.role}

-

+

{experience.company} • {experience.location}

diff --git a/src/components/thirdParty/Background.jsx b/src/components/thirdParty/Background.jsx new file mode 100644 index 0000000..6675646 --- /dev/null +++ b/src/components/thirdParty/Background.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import "../../styles/thirdParty/Background.css"; + +export default function Background() { + return ( +
+ {[...Array(100)].map((_, i) => ( +
+ ))} +
+
+
+
+
+ ); +} diff --git a/src/index.css b/src/index.css index b256db2..71166b0 100644 --- a/src/index.css +++ b/src/index.css @@ -2,7 +2,7 @@ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; - background-color: #121212; + background-color: #0D0D0D; } diff --git a/src/styles/Home.css b/src/styles/Home.css new file mode 100644 index 0000000..0d119bd --- /dev/null +++ b/src/styles/Home.css @@ -0,0 +1,53 @@ +#home-section { + position: relative; + min-height: 110vh; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + text-align: center; +} + + +#home-section h1{ + margin-bottom: 0; +} + +#home-section h2 { + font-size: 1.8rem; + color: #EAEAEA; + margin-bottom: 1rem; +} +#home-section p { + margin-bottom: 2rem; + color: #EAEAEA; + max-width: 40%; +} + + + +.highlight { + color: #D95F46; +} + +.btn { + padding: 0.75rem 1.5rem; + border: none; + border-radius: 5px; + text-decoration: none; + font-weight: bold; + background-color: #D95F46; + color: #fff; + transition: background-color 0.3s ease; + margin-bottom: 200px; +} + +.btn:hover { + background-color: #b94a36; + cursor: pointer; +} + + + + diff --git a/src/styles/SingleExperience.css b/src/styles/SingleExperience.css index f00ade7..35b4631 100644 --- a/src/styles/SingleExperience.css +++ b/src/styles/SingleExperience.css @@ -32,7 +32,7 @@ margin-bottom: 1rem; } -.experience-primary-info { +.experience-card-header-left { display: flex; flex-direction: column; } @@ -43,11 +43,11 @@ color: #EAEAEA; margin: 0; } -.experience-company-location{ +.experience-location{ font-weight: 600; } -.experience-company-location, +.experience-location, .experience-duration { font-size: 0.95rem; color: #B0B0B0; diff --git a/src/styles/thirdParty/Background.css b/src/styles/thirdParty/Background.css new file mode 100644 index 0000000..cd49587 --- /dev/null +++ b/src/styles/thirdParty/Background.css @@ -0,0 +1,104 @@ +.space-background { + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 123vh; + background: radial-gradient(ellipse at center, #0a001f 0%, #000000 80%); + overflow: hidden; + z-index: -1; +} + +.star { + position: absolute; + width: 2px; + height: 2px; + background: white; + border-radius: 50%; + opacity: 0.8; + animation: twinkle 3s infinite ease-in-out alternate; + filter: drop-shadow(0 0 2px white); +} + +.planet { + position: absolute; + bottom: 0%; + left: 50%; + transform: translateX(-50%); + width: 120vw; + height: 23vw; + max-height: 400px; + background: #0D0D0D; + border-radius: 60% 60% 0 0 / 100% 100% 0 0; + z-index: 1; + box-shadow: + 0 -20px 60px 10px rgba(255, 255, 255, 0.35), + inset 0 20px 60px 10px rgba(255, 255, 255, 0.25); +} + +.planet::after { + content: ""; + position: absolute; + top: -3px; + left: 50%; + transform: translateX(-50%); + width: 100%; + height: 100%; + border-top: 2.5px solid white; + border-radius: 60% 60% 0 0 / 100% 100% 0 0; + mask-image: linear-gradient(to right, transparent 0%, white 40%, white 60%, transparent 100%); + pointer-events: none; + z-index: 2; +} + +@keyframes twinkle { + 0% { opacity: 0.3; transform: scale(0.8); } + 100% { opacity: 1; transform: scale(1.2); } +} + +.nebula { + position: absolute; + border-radius: 50%; + filter: blur(80px); + opacity: 0.5; + mix-blend-mode: screen; + animation: nebulaMove 15s ease-in-out infinite alternate; +} + +.nebula1 { + width: 400px; + height: 400px; + background: radial-gradient(circle, #9b59b6 0%, transparent 70%); + top: 10%; + left: 15%; + animation-delay: 0s; +} + +.nebula2 { + width: 600px; + height: 600px; + background: radial-gradient(circle, #8e44ad 0%, transparent 70%); + top: 50%; + left: 65%; + animation-delay: 5s; +} + +.nebula3 { + width: 350px; + height: 350px; + background: radial-gradient(circle, #663399 0%, transparent 70%); + top: 75%; + left: 35%; + animation-delay: 10s; +} + +@keyframes nebulaMove { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.5; + } + 100% { + transform: translate(20px, -20px) scale(1.05); + opacity: 0.6; + } +}