writed project pages content
@@ -13,7 +13,7 @@ type props = {
|
|||||||
|
|
||||||
export default async function Home({ params }: props) {
|
export default async function Home({ params }: props) {
|
||||||
const { locale } = await params;
|
const { locale } = await params;
|
||||||
const projects = getAllProjects();
|
const projects = getAllProjects().filter((item) => item.ready);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className=" bg-brand-beige text-brand-black flex flex-col items-center justify-center">
|
<main className=" bg-brand-beige text-brand-black flex flex-col items-center justify-center">
|
||||||
|
|||||||
@@ -30,12 +30,13 @@ export default async function ProjectPage({ params }: props) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const otherProjects = getAllProjects()
|
const otherProjects = getAllProjects()
|
||||||
.filter((item: any) => item.slug !== slug)
|
.filter((item: any) => item.slug !== slug && item.ready)
|
||||||
.slice(0, 2)
|
.slice(0, 2)
|
||||||
.map((item: any) => ({
|
.map((item: any) => ({
|
||||||
slug: item.slug,
|
slug: item.slug,
|
||||||
title: item.title,
|
title: item.title,
|
||||||
subtitle: item.subtitle,
|
description: item.description,
|
||||||
|
cover: item.cover
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ type props = {
|
|||||||
projects: {
|
projects: {
|
||||||
slug: string;
|
slug: string;
|
||||||
title: string;
|
title: string;
|
||||||
subtitle: string;
|
description: string;
|
||||||
|
cover: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -14,7 +15,7 @@ export function OtherProjects({ locale, projects }: props) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="pb-20 pt-8">
|
<section className="pb-20 pt-8">
|
||||||
<h2 className="mb-10 text-center text-5xl font-semibold">
|
<h2 className="mb-10 text-center text-[clamp(80px,10vw,128px)] font-serif text-brand-brown">
|
||||||
Autres projets
|
Autres projets
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
@@ -25,13 +26,9 @@ export function OtherProjects({ locale, projects }: props) {
|
|||||||
href={`/${locale}/works/${project.slug}`}
|
href={`/${locale}/works/${project.slug}`}
|
||||||
className="group block"
|
className="group block"
|
||||||
>
|
>
|
||||||
<div className="mb-3 text-2xl font-medium">{project.title}</div>
|
<div className="mb-3 text-3xl font-sans">{project.title}</div>
|
||||||
|
<p className="mb-3 text-sm text-neutral-500">{project.description}</p>
|
||||||
<div className="flex min-h-[220px] items-center justify-center rounded-[22px] bg-white text-4xl shadow-sm transition group-hover:-translate-y-1">
|
<img className="flex min-h-[220px] items-center justify-center rounded-[22px] bg-white text-4xl shadow-sm transition group-hover:-translate-y-1" src={project.cover} alt="cover image" />
|
||||||
{project.title}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p className="mt-3 text-sm text-neutral-500">{project.subtitle}</p>
|
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
---
|
---
|
||||||
|
ready: true
|
||||||
title: "EverEast Solutions"
|
title: "EverEast Solutions"
|
||||||
priority: 1
|
priority: 1
|
||||||
|
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
||||||
dateLabel: "2026 - auj."
|
dateLabel: "2026 - auj."
|
||||||
category: "Application web"
|
category: "Application web"
|
||||||
client: "EverEast Solutions"
|
client: "EverEast Solutions"
|
||||||
@@ -15,10 +17,9 @@ technologies:
|
|||||||
- "Cloudron"
|
- "Cloudron"
|
||||||
- "Mollie"
|
- "Mollie"
|
||||||
- "Ackee"
|
- "Ackee"
|
||||||
cover: "/images/projects/evereast/cover.jpg"
|
cover: "/images/projects/evereast/cover.png"
|
||||||
preview1: "/images/projects/evereast/preview-1.jpg"
|
preview1: "/images/projects/evereast/preview-1.png"
|
||||||
preview2: "/images/projects/evereast/preview-2.jpg"
|
preview2: "/images/projects/evereast/preview-2.png"
|
||||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
|
||||||
website: "https://evereast-solutions.com"
|
website: "https://evereast-solutions.com"
|
||||||
featured: true
|
featured: true
|
||||||
---
|
---
|
||||||
@@ -47,8 +48,8 @@ featured: true
|
|||||||
|
|
||||||
<ProjectPreviewGrid
|
<ProjectPreviewGrid
|
||||||
items={[
|
items={[
|
||||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
{ title: "Aperçu 1", image: "/images/projects/evereast/preview-1.png" },
|
||||||
{ title: "Aperçu 2", image: "" }
|
{ title: "Aperçu 2", image: "/images/projects/evereast/preview-2.png" }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
---
|
---
|
||||||
title: "EverEast Solutions"
|
ready: true
|
||||||
priority: 1
|
title: "Global Git Contribution Graph (GGCG)"
|
||||||
|
priority: 4
|
||||||
|
description: "Une vue unifiée et élégante de toute votre activité de développement, centralisant les contributions de toutes vos forges Git dans une seule heatmap interactive."
|
||||||
dateLabel: "2026 - auj."
|
dateLabel: "2026 - auj."
|
||||||
category: "Application web"
|
category: "Application web"
|
||||||
client: "EverEast Solutions"
|
client: "Open Source"
|
||||||
roles:
|
roles:
|
||||||
- "Co-fondateur"
|
|
||||||
- "Développeur Full-Stack"
|
- "Développeur Full-Stack"
|
||||||
technologies:
|
technologies:
|
||||||
- "React"
|
- "Next JS"
|
||||||
- "FastAPI"
|
- "Rust"
|
||||||
- "MariaDB"
|
- "MariaDB"
|
||||||
|
- "Reids"
|
||||||
- "Docker"
|
- "Docker"
|
||||||
- "Cloudron"
|
cover: "/images/projects/ggcg/cover.png"
|
||||||
- "Mollie"
|
preview1: "/images/projects/ggcg/preview-1.png"
|
||||||
- "Ackee"
|
preview2: "/images/projects/ggcg/preview-2.png"
|
||||||
cover: "/images/projects/evereast/cover.jpg"
|
|
||||||
preview1: "/images/projects/evereast/preview-1.jpg"
|
|
||||||
preview2: "/images/projects/evereast/preview-2.jpg"
|
|
||||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
|
||||||
website: "https://evereast-solutions.com"
|
|
||||||
featured: true
|
featured: true
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -28,27 +25,20 @@ featured: true
|
|||||||
|
|
||||||
<ProjectsColumns>
|
<ProjectsColumns>
|
||||||
<div>
|
<div>
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
En tant que développeurs, notre activité est souvent dispersée sur plusieurs plateformes. GitHub est le standard, mais de nombreuses entreprises utilisent GitLab, et les communautés open source se tournent de plus en plus vers des alternatives comme CodeBerg ou encore Forgejo.
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
GGCG est une application front-end qui agrège les données de contribution git de multiples sources. Le projet à vocation à être auto-hébergé par les développeurs qui le souhaite. Un application mobile existe aussi.
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus.
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
Ce projet à posé plusieurs défis. Entre autre la conception de l'architecture de l'application pour mixer performances des agrégations de données couteuse et répétitives, disponibilité du service autohébergé par l'utilisateur ou publiquement accessible via l'application mobile, persistances des configurations utilisateur et respet des quota api des différentes forges.
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
Le tout en maitrisant la confifentialité des données et leur niveau de sensibilité.
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu.
|
|
||||||
</div>
|
</div>
|
||||||
</ProjectsColumns>
|
</ProjectsColumns>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ProjectPreviewGrid
|
<ProjectPreviewGrid
|
||||||
items={[
|
items={[
|
||||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
{ title: "Aperçu 1", image: "/images/projects/ggcg/preview-1.png" },
|
||||||
{ title: "Aperçu 2", image: "" }
|
{ title: "Aperçu 2", image: "/images/projects/ggcg/preview-2.png" }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
---
|
---
|
||||||
title: "EverEast Solutions"
|
ready: true
|
||||||
priority: 1
|
title: "MG Dev"
|
||||||
|
priority: 3
|
||||||
|
description: ""
|
||||||
dateLabel: "2026 - auj."
|
dateLabel: "2026 - auj."
|
||||||
category: "Application web"
|
category: "Application web"
|
||||||
client: "EverEast Solutions"
|
client: "EverEast Solutions"
|
||||||
roles:
|
roles:
|
||||||
- "Co-fondateur"
|
|
||||||
- "Développeur Full-Stack"
|
- "Développeur Full-Stack"
|
||||||
technologies:
|
technologies:
|
||||||
- "React"
|
- "React"
|
||||||
- "FastAPI"
|
- "Vercel"
|
||||||
- "MariaDB"
|
- "Resend"
|
||||||
- "Docker"
|
- "Docker"
|
||||||
- "Cloudron"
|
|
||||||
- "Mollie"
|
|
||||||
- "Ackee"
|
- "Ackee"
|
||||||
cover: "/images/projects/evereast/cover.jpg"
|
cover: "/images/projects/mgdev/cover.png"
|
||||||
preview1: "/images/projects/evereast/preview-1.jpg"
|
preview1: "/images/projects/mgdev/preview-1.png"
|
||||||
preview2: "/images/projects/evereast/preview-2.jpg"
|
preview2: "/images/projects/mgdev/preview-2.png"
|
||||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
|
||||||
website: "https://evereast-solutions.com"
|
|
||||||
featured: true
|
featured: true
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -47,8 +44,8 @@ featured: true
|
|||||||
|
|
||||||
<ProjectPreviewGrid
|
<ProjectPreviewGrid
|
||||||
items={[
|
items={[
|
||||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
{ title: "Aperçu 1", image: "/images/projects/mgdev/preview-1.png" },
|
||||||
{ title: "Aperçu 2", image: "" }
|
{ title: "Aperçu 2", image: "/images/projects/mgdev/preview-2.png" }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
---
|
---
|
||||||
|
ready: true
|
||||||
title: "Threadbase"
|
title: "Threadbase"
|
||||||
priority: 2
|
priority: 2
|
||||||
|
description: "L'application macOS qui sauvegarde les fenêtres, les notes mentales et le contexte de travaille de l'utilisateur."
|
||||||
dateLabel: "2026 - auj."
|
dateLabel: "2026 - auj."
|
||||||
category: "Application macOS"
|
category: "Application macOS"
|
||||||
client: "Mathéo Guilbert EI"
|
client: "Mathéo Guilbert EI"
|
||||||
roles:
|
roles:
|
||||||
- "Développeur Full-Stack"
|
- "Développeur Full-Stack"
|
||||||
technologies:
|
technologies:
|
||||||
- "React"
|
- "Swift"
|
||||||
- "FastAPI"
|
- "Next JS"
|
||||||
- "MariaDB"
|
- "MariaDB"
|
||||||
- "Docker"
|
- "Docker"
|
||||||
- "Cloudron"
|
- "Komodo"
|
||||||
- "Mollie"
|
- "PostHog"
|
||||||
- "Ackee"
|
cover: "/images/projects/threadbase/cover.png"
|
||||||
cover: "/images/projects/threadbase/cover.jpg"
|
preview1: "/images/projects/threadbase/preview-1.png"
|
||||||
preview1: "/images/projects/threadbase/preview-1.jpg"
|
preview2: "/images/projects/threadbase/preview-2.png"
|
||||||
preview2: "/images/projects/threadbase/preview-2.jpg"
|
|
||||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
|
||||||
website: "https://evereast-solutions.com"
|
website: "https://evereast-solutions.com"
|
||||||
featured: true
|
featured: true
|
||||||
---
|
---
|
||||||
@@ -27,27 +27,22 @@ featured: true
|
|||||||
|
|
||||||
<ProjectsColumns>
|
<ProjectsColumns>
|
||||||
<div>
|
<div>
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
Threadbase est une application macOS que je développe en tant qu'indépendant. Le but est de faciliter la reprise d'un projet par un développeur après une pause plus ou moins longue.
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
Ce projet m'a permi de me former au développement d'application dans l'écosystème Apple et à la manipulation de l'OS (bureaux virtuels, applications).
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed
|
|
||||||
pulvinar eget in. Mi varius senectus adipiscing augue in metus.
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
Il m'a également apporté la notion de vente d'un produit numérique, qui compte autant que le produit lui même.
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
J'ai tout développé moi même, l'application en tant que telle, la landing page, gestion des licences logiciels, mise en place de l'architecture serveur qui accueil tout cela.
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu. Eget sagittis dui dictum porttitor. Urna ornare mattis pharetra sapien
|
|
||||||
elit netus eleifend ante et. Viverra nunc duis id pellentesque aliquam arcu.
|
|
||||||
</div>
|
</div>
|
||||||
</ProjectsColumns>
|
</ProjectsColumns>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ProjectPreviewGrid
|
<ProjectPreviewGrid
|
||||||
items={[
|
items={[
|
||||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
{ title: "Aperçu 1", image: "/images/projects/threadbase/preview-1.png" },
|
||||||
{ title: "Aperçu 2", image: "" }
|
{ title: "Aperçu 2", image: "/images/projects/threadbase/preview-2.png" }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
ready: false
|
||||||
|
title: ""
|
||||||
|
priority: 1
|
||||||
|
description: ""
|
||||||
|
dateLabel: ""
|
||||||
|
category: ""
|
||||||
|
client: ""
|
||||||
|
roles:
|
||||||
|
- ""
|
||||||
|
technologies:
|
||||||
|
- ""
|
||||||
|
cover: "/images/projects/template/cover.png"
|
||||||
|
preview1: "/images/projects/template/preview-1.png"
|
||||||
|
preview2: "/images/projects/template/preview-2.png"
|
||||||
|
featured: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2>La mission</h2>
|
||||||
|
|
||||||
|
<ProjectsColumns>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ProjectsColumns>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ProjectPreviewGrid
|
||||||
|
items={[
|
||||||
|
{ title: "", image: "/images/projects/template/preview-1.png" },
|
||||||
|
{ title: "", image: "/images/projects/template/preview-2.png" }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ProjectVisitButton href="" />
|
||||||
@@ -38,5 +38,5 @@ export function getAllProjects(): Project[] {
|
|||||||
return getProjectSlugs()
|
return getProjectSlugs()
|
||||||
.map((slug) => getProjectBySlug(slug))
|
.map((slug) => getProjectBySlug(slug))
|
||||||
.filter((project): project is Project => project !== null)
|
.filter((project): project is Project => project !== null)
|
||||||
.sort((a, b) => b.priority - a.priority);
|
.sort((a, b) => a.priority - b.priority);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
export type ProjectFrontmatter = {
|
export type ProjectFrontmatter = {
|
||||||
|
ready: boolean;
|
||||||
title: string;
|
title: string;
|
||||||
priority: number;
|
priority: number;
|
||||||
category: string;
|
category: string;
|
||||||
@@ -7,7 +8,7 @@ export type ProjectFrontmatter = {
|
|||||||
technologies: string[];
|
technologies: string[];
|
||||||
preview1?: string;
|
preview1?: string;
|
||||||
preview2?: string;
|
preview2?: string;
|
||||||
website: string;
|
website?: string;
|
||||||
featured: boolean;
|
featured: boolean;
|
||||||
description: string;
|
description: string;
|
||||||
dateLabel: string;
|
dateLabel: string;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 559 KiB |
|
After Width: | Height: | Size: 559 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |