writed project pages content
@@ -13,7 +13,7 @@ type props = {
|
||||
|
||||
export default async function Home({ params }: props) {
|
||||
const { locale } = await params;
|
||||
const projects = getAllProjects();
|
||||
const projects = getAllProjects().filter((item) => item.ready);
|
||||
|
||||
return (
|
||||
<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()
|
||||
.filter((item: any) => item.slug !== slug)
|
||||
.filter((item: any) => item.slug !== slug && item.ready)
|
||||
.slice(0, 2)
|
||||
.map((item: any) => ({
|
||||
slug: item.slug,
|
||||
title: item.title,
|
||||
subtitle: item.subtitle,
|
||||
description: item.description,
|
||||
cover: item.cover
|
||||
}));
|
||||
|
||||
return (
|
||||
|
||||
@@ -5,7 +5,8 @@ type props = {
|
||||
projects: {
|
||||
slug: string;
|
||||
title: string;
|
||||
subtitle: string;
|
||||
description: string;
|
||||
cover: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
@@ -14,7 +15,7 @@ export function OtherProjects({ locale, projects }: props) {
|
||||
|
||||
return (
|
||||
<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
|
||||
</h2>
|
||||
|
||||
@@ -25,13 +26,9 @@ export function OtherProjects({ locale, projects }: props) {
|
||||
href={`/${locale}/works/${project.slug}`}
|
||||
className="group block"
|
||||
>
|
||||
<div className="mb-3 text-2xl font-medium">{project.title}</div>
|
||||
|
||||
<div className="flex min-h-[220px] items-center justify-center rounded-[22px] bg-white text-4xl shadow-sm transition group-hover:-translate-y-1">
|
||||
{project.title}
|
||||
</div>
|
||||
|
||||
<p className="mt-3 text-sm text-neutral-500">{project.subtitle}</p>
|
||||
<div className="mb-3 text-3xl font-sans">{project.title}</div>
|
||||
<p className="mb-3 text-sm text-neutral-500">{project.description}</p>
|
||||
<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" />
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
---
|
||||
ready: true
|
||||
title: "EverEast Solutions"
|
||||
priority: 1
|
||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
||||
dateLabel: "2026 - auj."
|
||||
category: "Application web"
|
||||
client: "EverEast Solutions"
|
||||
@@ -15,10 +17,9 @@ technologies:
|
||||
- "Cloudron"
|
||||
- "Mollie"
|
||||
- "Ackee"
|
||||
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"
|
||||
cover: "/images/projects/evereast/cover.png"
|
||||
preview1: "/images/projects/evereast/preview-1.png"
|
||||
preview2: "/images/projects/evereast/preview-2.png"
|
||||
website: "https://evereast-solutions.com"
|
||||
featured: true
|
||||
---
|
||||
@@ -47,8 +48,8 @@ featured: true
|
||||
|
||||
<ProjectPreviewGrid
|
||||
items={[
|
||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
||||
{ title: "Aperçu 2", image: "" }
|
||||
{ title: "Aperçu 1", image: "/images/projects/evereast/preview-1.png" },
|
||||
{ title: "Aperçu 2", image: "/images/projects/evereast/preview-2.png" }
|
||||
]}
|
||||
/>
|
||||
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
---
|
||||
title: "EverEast Solutions"
|
||||
priority: 1
|
||||
ready: true
|
||||
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."
|
||||
category: "Application web"
|
||||
client: "EverEast Solutions"
|
||||
client: "Open Source"
|
||||
roles:
|
||||
- "Co-fondateur"
|
||||
- "Développeur Full-Stack"
|
||||
technologies:
|
||||
- "React"
|
||||
- "FastAPI"
|
||||
- "Next JS"
|
||||
- "Rust"
|
||||
- "MariaDB"
|
||||
- "Reids"
|
||||
- "Docker"
|
||||
- "Cloudron"
|
||||
- "Mollie"
|
||||
- "Ackee"
|
||||
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"
|
||||
cover: "/images/projects/ggcg/cover.png"
|
||||
preview1: "/images/projects/ggcg/preview-1.png"
|
||||
preview2: "/images/projects/ggcg/preview-2.png"
|
||||
featured: true
|
||||
---
|
||||
|
||||
@@ -28,27 +25,20 @@ featured: true
|
||||
|
||||
<ProjectsColumns>
|
||||
<div>
|
||||
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. 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.
|
||||
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.
|
||||
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.
|
||||
</div>
|
||||
<div>
|
||||
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. 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.
|
||||
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.
|
||||
Le tout en maitrisant la confifentialité des données et leur niveau de sensibilité.
|
||||
</div>
|
||||
</ProjectsColumns>
|
||||
</div>
|
||||
|
||||
<ProjectPreviewGrid
|
||||
items={[
|
||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
||||
{ title: "Aperçu 2", image: "" }
|
||||
{ title: "Aperçu 1", image: "/images/projects/ggcg/preview-1.png" },
|
||||
{ title: "Aperçu 2", image: "/images/projects/ggcg/preview-2.png" }
|
||||
]}
|
||||
/>
|
||||
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
---
|
||||
title: "EverEast Solutions"
|
||||
priority: 1
|
||||
ready: true
|
||||
title: "MG Dev"
|
||||
priority: 3
|
||||
description: ""
|
||||
dateLabel: "2026 - auj."
|
||||
category: "Application web"
|
||||
client: "EverEast Solutions"
|
||||
roles:
|
||||
- "Co-fondateur"
|
||||
- "Développeur Full-Stack"
|
||||
technologies:
|
||||
- "React"
|
||||
- "FastAPI"
|
||||
- "MariaDB"
|
||||
- "Vercel"
|
||||
- "Resend"
|
||||
- "Docker"
|
||||
- "Cloudron"
|
||||
- "Mollie"
|
||||
- "Ackee"
|
||||
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"
|
||||
cover: "/images/projects/mgdev/cover.png"
|
||||
preview1: "/images/projects/mgdev/preview-1.png"
|
||||
preview2: "/images/projects/mgdev/preview-2.png"
|
||||
featured: true
|
||||
---
|
||||
|
||||
@@ -47,8 +44,8 @@ featured: true
|
||||
|
||||
<ProjectPreviewGrid
|
||||
items={[
|
||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
||||
{ title: "Aperçu 2", image: "" }
|
||||
{ title: "Aperçu 1", image: "/images/projects/mgdev/preview-1.png" },
|
||||
{ title: "Aperçu 2", image: "/images/projects/mgdev/preview-2.png" }
|
||||
]}
|
||||
/>
|
||||
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
---
|
||||
ready: true
|
||||
title: "Threadbase"
|
||||
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."
|
||||
category: "Application macOS"
|
||||
client: "Mathéo Guilbert EI"
|
||||
roles:
|
||||
- "Développeur Full-Stack"
|
||||
technologies:
|
||||
- "React"
|
||||
- "FastAPI"
|
||||
- "Swift"
|
||||
- "Next JS"
|
||||
- "MariaDB"
|
||||
- "Docker"
|
||||
- "Cloudron"
|
||||
- "Mollie"
|
||||
- "Ackee"
|
||||
cover: "/images/projects/threadbase/cover.jpg"
|
||||
preview1: "/images/projects/threadbase/preview-1.jpg"
|
||||
preview2: "/images/projects/threadbase/preview-2.jpg"
|
||||
description: "Plateforme de mise en relations clients - agences web et gestion de projet agile"
|
||||
- "Komodo"
|
||||
- "PostHog"
|
||||
cover: "/images/projects/threadbase/cover.png"
|
||||
preview1: "/images/projects/threadbase/preview-1.png"
|
||||
preview2: "/images/projects/threadbase/preview-2.png"
|
||||
website: "https://evereast-solutions.com"
|
||||
featured: true
|
||||
---
|
||||
@@ -27,27 +27,22 @@ featured: true
|
||||
|
||||
<ProjectsColumns>
|
||||
<div>
|
||||
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. 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.
|
||||
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.
|
||||
|
||||
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).
|
||||
</div>
|
||||
<div>
|
||||
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. 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.
|
||||
Il m'a également apporté la notion de vente d'un produit numérique, qui compte autant que le produit lui même.
|
||||
|
||||
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.
|
||||
</div>
|
||||
</ProjectsColumns>
|
||||
</div>
|
||||
|
||||
<ProjectPreviewGrid
|
||||
items={[
|
||||
{ title: "Aperçu 1", image: "/images/projects/EverEastSultions/preview-1.jpg" },
|
||||
{ title: "Aperçu 2", image: "" }
|
||||
{ title: "Aperçu 1", image: "/images/projects/threadbase/preview-1.png" },
|
||||
{ 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()
|
||||
.map((slug) => getProjectBySlug(slug))
|
||||
.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 = {
|
||||
ready: boolean;
|
||||
title: string;
|
||||
priority: number;
|
||||
category: string;
|
||||
@@ -7,7 +8,7 @@ export type ProjectFrontmatter = {
|
||||
technologies: string[];
|
||||
preview1?: string;
|
||||
preview2?: string;
|
||||
website: string;
|
||||
website?: string;
|
||||
featured: boolean;
|
||||
description: 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 |