Compare commits

...

7 Commits

Author SHA1 Message Date
Alexis
91e7bf337d Merge branch 'dev' 2026-07-07 22:31:31 +02:00
Alexis
81e2729b34 Version bump 2026-07-07 22:31:26 +02:00
Alexis
f06ee6387d Fixed gitea link 2026-07-07 22:30:40 +02:00
Alexis
59bcd63ab7 Added more seo data 2026-07-07 22:26:16 +02:00
Alexis
a2281d5363 Added gitea button 2026-07-07 21:25:29 +02:00
Alexis
12725101af Removed particle scripts 2026-07-07 21:09:06 +02:00
Alexis
4926ad1b2f Updated navbar 2026-07-07 21:08:10 +02:00
9 changed files with 2262 additions and 2578 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "alexis-portfolio",
"type": "module",
"version": "1.1.0",
"version": "1.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
@@ -10,16 +10,16 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/sitemap": "^3.7.0",
"@astrojs/vue": "^5.1.4",
"@tailwindcss/vite": "^4.1.18",
"@vueuse/core": "^14.1.0",
"astro": "^5.16.11",
"astro-compressor": "^1.2.0",
"tailwindcss": "^4.1.18",
"vue": "^3.5.26"
"@astrojs/sitemap": "^3.7.3",
"@astrojs/vue": "^7.0.1",
"@tailwindcss/vite": "^4.3.2",
"@vueuse/core": "^14.3.0",
"astro": "^7.0.6",
"astro-compressor": "^1.3.0",
"tailwindcss": "^4.3.2",
"vue": "^3.5.39"
},
"devDependencies": {
"sass": "^1.97.2"
"sass": "^1.101.0"
}
}

4470
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,7 @@
allowBuilds:
'@parcel/watcher': true
esbuild: true
sharp: true
onlyBuiltDependencies:
- '@parcel/watcher'
- '@tailwindcss/oxide'

View File

@@ -18,4 +18,4 @@
background: radial-gradient(circle, #020617 2%, transparent 20%);
}
}
</style>
</style>

View File

@@ -1,41 +1,55 @@
---
interface MenuItem {
slug: string
label: string
to: string
}
const menuItems: MenuItem[] = [
{
label: "Home",
to: ""
},
{
label: "Projects",
to: "projects"
}
const links: MenuItem[] = [
// {
// label: "Projects",
// slug: "projects",
// to: "/projects"
// }
]
const activeSegment = Astro.url.pathname.split("/")[1]
const onHome = Astro.url.pathname === "/"
---
<header
class="absolute top-0 left-0 pt-6 w-full z-10"
>
<nav class="container text-[.8em]" aria-labelledby="Main pages">
<nav class="container text-[.8em]" aria-label="Primary">
<menu class="px-6 py-2 bg-slate-900/50 rounded-xl backdrop-blur flex gap-6">
{menuItems.map((item) => (
<li>
<a
href="/"
aria-current={onHome ? "page" : "false"}
class="block py-2 underline-offset-4 hover:underline text-body/80 hover:text-body"
class:list={
{
"text-primary/90 hover:text-primary": onHome,
"text-body/80 hover:text-body": !onHome
}
}
>
Home
</a>
</li>
{links.map((link) => (
<li>
<a
href={"/" + item.to}
class="block py-2 underline-offset-4 hover:underline"
href={link.to}
aria-current={ Astro.url.pathname.startsWith(link.to) ? 'page' : 'false' }
class="block py-2 underline-offset-4 hover:underline text-body/80 hover:text-body"
class:list={
{
"text-primary/80 hover:text-primary": activeSegment === item.to,
"text-body/80 hover:text-body": activeSegment !== item.to
"text-primary/90 hover:text-primary": Astro.url.pathname.startsWith(link.to),
"text-body/80 hover:text-body": !Astro.url.pathname.startsWith(link.to)
}
}
>
{item.label}
{link.label}
</a>
</li>
))}

View File

@@ -1,6 +1,6 @@
---
import '../../assets/css/main.css'
import BgParticles from '../components/BgParticles.astro'
// import BgParticles from '../components/BgParticles.astro'
import BgGrid from '../components/BgGrid.astro'
import HeadFavicon from './HeadFavicon.astro'
import Navbar from "../components/Navbar.astro";
@@ -11,7 +11,11 @@ interface Props {
hasGrid?: boolean
}
const { title = "Home", hasParticles = false, hasGrid = false } = Astro.props
const {
title = "Home",
// hasParticles = false,
hasGrid = false
} = Astro.props
const baseTitle = 'Alexis Pelé'
const renderedTitle = `${title} · ${baseTitle}`
@@ -26,12 +30,118 @@ const websiteDomain = "alexcreates.fr"
<!DOCTYPE html>
<html lang="en">
<head>
<title>{ renderedTitle }</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"email": "contact@alexcreates.fr",
"jobTitle": "Front-end engineer",
"name": "Alexis Pelé",
"url": "https://alexcreates.fr/",
"description": "Front-end engineer specializing in TypeScript and Vue.js, building performant, accessible web applications.",
"sameAs": [
"https://gitea.peacock-wyrm.ts.net/Joururi",
"https://fr.linkedin.com/in/alexis-pel%C3%A9-b27958159",
"https://github.com/AlexisNP"
],
"knowsAbout": [
"TypeScript",
"Vue.js",
"Nuxt.js",
"JavaScript",
"Front-End Development",
"Web Performance Optimization",
"REST APIs",
"Pinia",
"Vite",
"Docker",
"Docker Composer",
"Angular",
"PHP",
"Wordpress",
"Aria",
"Accessibility"
],
"knowsLanguage": [
{
"@type": "Language",
"name": "French",
"alternateName": "fr"
},
{
"@type": "Language",
"name": "English",
"alternateName": "en"
}
],
"worksFor": {
"@type": "Organization",
"name": "Agence Polux",
"url": "https://agence-polux.fr/"
},
"nationality": {
"@type": "Country",
"name": "France"
},
"pronouns": "he/him"
},
{
"@type": "ItemList",
"@id": "https://alexcreates.fr/#projects",
"name": "Featured Projects",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "CreativeWork",
"name": "Leim Maps",
"description": "A Vue 3 + TypeScript application for X.",
"url": "https://maps.alexcreates.fr",
"sameAs": "https://gitea.peacock-wyrm.ts.net/Joururi/leim-maps",
"image": "https://alexcreates.fr/images/project-one.jpg",
"creator": {
"@id": "https://alexcreates.fr/#person"
},
"keywords": "Vue 3, TypeScript, Astro, Vite, Leaflet"
}
}
]
},
{
"@type": "WebSite",
"@id": "https://alexcreates.fr/#website",
"url": "https://alexcreates.fr",
"name": "Alexis Pelé | Front-End Engineer",
"description": "Portfolio of Alexis Pelé, a front-end engineer.",
"publisher": {
"@id": "https://alexcreates.fr/#person"
},
"inLanguage": "en-US"
},
{
"@type": "BreadcrumbList",
"@id": "https://alexcreates.fr/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://alexcreates.fr/"
}
]
}
]
}
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href={Astro.url} />
<meta name="generator" content={ Astro.generator } />
<title>{ renderedTitle }</title>
<meta property="og:title" content={renderedTitle} />
<meta name="description" content={description} />
@@ -52,48 +162,19 @@ const websiteDomain = "alexcreates.fr"
<meta name="twitter:domain" content={websiteDomain} />
<meta property="og:type" content="website" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"email": "mailto:contact@alexcreates.fr",
"jobTitle": "Web developer",
"name": "Alexis",
"familyName": "Pelé",
"url": "https://alexcreates.fr/",
"nationality": {
"@type": "Country",
"name": "France"
},
"pronouns": "he/him",
"knowsLanguage": [
{
"@type": "Language",
"name": "French",
"alternateName": "fr"
},
{
"@type": "Language",
"name": "English",
"alternateName": "en"
}
]
}
</script>
</head>
<body class="h-screen relative bg-background text-body px-12 overflow-hidden">
<Navbar />
<body class="h-screen relative bg-background text-body px-3 md:px-12 overflow-hidden">
<Navbar />
<slot />
<slot />
{hasParticles &&
<BgParticles />
}
<!-- {hasParticles &&
<BgParticles />
} -->
{hasGrid &&
<BgGrid />
}
{hasGrid &&
<BgGrid />
}
</body>
</html>

View File

@@ -56,27 +56,106 @@ const websiteDomain = "alexcreates.fr"
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"email": "mailto:contact@alexcreates.fr",
"jobTitle": "Web developer",
"name": "Alexis",
"familyName": "Pelé",
"url": "https://alexcreates.fr/",
"nationality": {
"@type": "Country",
"name": "France"
},
"pronouns": "he/him",
"knowsLanguage": [
"@graph": [
{
"@type": "Language",
"name": "French",
"alternateName": "fr"
"@type": "Person",
"email": "contact@alexcreates.fr",
"jobTitle": "Front-end engineer",
"name": "Alexis Pelé",
"url": "https://alexcreates.fr/",
"description": "Front-end engineer specializing in TypeScript and Vue.js, building performant, accessible web applications.",
"sameAs": [
"https://gitea.peacock-wyrm.ts.net/Joururi",
"https://fr.linkedin.com/in/alexis-pel%C3%A9-b27958159",
"https://github.com/AlexisNP"
],
"knowsAbout": [
"TypeScript",
"Vue.js",
"Nuxt.js",
"JavaScript",
"Front-End Development",
"Web Performance Optimization",
"REST APIs",
"Pinia",
"Vite",
"Docker",
"Docker Composer",
"Angular",
"PHP",
"Wordpress",
"Aria",
"Accessibility",
"Tailscale"
],
"knowsLanguage": [
{
"@type": "Language",
"name": "French",
"alternateName": "fr"
},
{
"@type": "Language",
"name": "English",
"alternateName": "en"
}
],
"worksFor": {
"@type": "Organization",
"name": "Agence Polux",
"url": "https://agence-polux.fr/"
},
"nationality": {
"@type": "Country",
"name": "France"
},
"pronouns": "he/him"
},
{
"@type": "Language",
"name": "English",
"alternateName": "en"
"@type": "ItemList",
"@id": "https://alexcreates.fr/#projects",
"name": "Featured Projects",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "CreativeWork",
"name": "Leim Maps",
"description": "A Vue 3 + TypeScript application for X.",
"url": "https://maps.alexcreates.fr",
"sameAs": "https://gitea.peacock-wyrm.ts.net/Joururi/leim-maps",
"image": "https://alexcreates.fr/images/project-one.jpg",
"creator": {
"@id": "https://alexcreates.fr/#person"
},
"keywords": "Vue 3, TypeScript, Astro, Vite, Leaflet"
}
}
]
},
{
"@type": "WebSite",
"@id": "https://alexcreates.fr/#website",
"url": "https://alexcreates.fr",
"name": "Alexis Pelé | Front-End Engineer",
"description": "Portfolio of Alexis Pelé, a front-end engineer.",
"publisher": {
"@id": "https://alexcreates.fr/#person"
},
"inLanguage": "en-US"
},
{
"@type": "BreadcrumbList",
"@id": "https://alexcreates.fr/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://alexcreates.fr/"
}
]
}
]
}

View File

@@ -27,8 +27,16 @@ import HomeLayout from '../layouts/HomeLayout.astro';
</p>
</div>
<div class="mt-8 flex items-center justify-center gap-4 md:gap-8">
<Button href="https://github.com/AlexisNP" glow variant="primary">
<div class="mt-8 flex items-center justify-center gap-2 md:gap-4">
<Button href="https://gitea.peacock-wyrm.ts.net/Joururi" glow variant="primary">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" viewBox="0 0 256 256" style="--darkreader-inline-fill: var(--darkreader-background-000000, #000000);" data-darkreader-inline-fill=""><path d="M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z"></path></svg>
<span>
Gitea
</span>
</Button>
<Button href="https://github.com/AlexisNP" variant="secondary">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" viewBox="0 0 256 256">
<path d="M208.31,75.68A59.78,59.78,0,0,0,202.93,28,8,8,0,0,0,196,24a59.75,59.75,0,0,0-48,24H124A59.75,59.75,0,0,0,76,24a8,8,0,0,0-6.93,4,59.78,59.78,0,0,0-5.38,47.68A58.14,58.14,0,0,0,56,104v8a56.06,56.06,0,0,0,48.44,55.47A39.8,39.8,0,0,0,96,192v8H72a24,24,0,0,1-24-24A40,40,0,0,0,8,136a8,8,0,0,0,0,16,24,24,0,0,1,24,24,40,40,0,0,0,40,40H96v16a8,8,0,0,0,16,0V192a24,24,0,0,1,48,0v40a8,8,0,0,0,16,0V192a39.8,39.8,0,0,0-8.44-24.53A56.06,56.06,0,0,0,216,112v-8A58.14,58.14,0,0,0,208.31,75.68ZM200,112a40,40,0,0,1-40,40H112a40,40,0,0,1-40-40v-8a41.74,41.74,0,0,1,6.9-22.48A8,8,0,0,0,80,73.83a43.81,43.81,0,0,1,.79-33.58,43.88,43.88,0,0,1,32.32,20.06A8,8,0,0,0,119.82,64h32.35a8,8,0,0,0,6.74-3.69,43.87,43.87,0,0,1,32.32-20.06A43.81,43.81,0,0,1,192,73.83a8.09,8.09,0,0,0,1,7.65A41.72,41.72,0,0,1,200,104Z" />
</svg>
@@ -37,7 +45,9 @@ import HomeLayout from '../layouts/HomeLayout.astro';
Github
</span>
</Button>
</div>
<div class="mt-2 flex items-center justify-center gap-2 md:gap-4">
<Button href="mailto:contact@alexcreates.fr">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" viewBox="0 0 256 256">
<path d="M132,24A100.11,100.11,0,0,0,32,124v84a16,16,0,0,0,16,16h84a100,100,0,0,0,0-200Zm0,184H48V124a84,84,0,1,1,84,84Zm12-80a12,12,0,1,1-12-12A12,12,0,0,1,144,128Zm-44,0a12,12,0,1,1-12-12A12,12,0,0,1,100,128Zm88,0a12,12,0,1,1-12-12A12,12,0,0,1,188,128Z" />
@@ -51,7 +61,7 @@ import HomeLayout from '../layouts/HomeLayout.astro';
</div>
</div>
<p class="absolute px-4 bottom-8 left-1/2 -translate-x-1/2 opacity-50 text-xs md:text-sm text-center">@2025&nbsp;·&nbsp;Website is currently a WIP&nbsp;;&nbsp;some things may change&nbsp;!</p>
<p class="absolute w-full px-4 bottom-8 left-1/2 -translate-x-1/2 opacity-50 text-xs md:text-sm text-center">@2026&nbsp;·&nbsp;Website is currently a WIP&nbsp;;&nbsp;some things may change&nbsp;!</p>
</div>
</main>
</HomeLayout>