diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx index e8ead70..26a51ef 100644 --- a/app/[locale]/page.tsx +++ b/app/[locale]/page.tsx @@ -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 (
diff --git a/app/[locale]/works/[slug]/page.tsx b/app/[locale]/works/[slug]/page.tsx index 6d403b2..4619e55 100644 --- a/app/[locale]/works/[slug]/page.tsx +++ b/app/[locale]/works/[slug]/page.tsx @@ -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 ( diff --git a/components/sections/OtherProjects.tsx b/components/sections/OtherProjects.tsx index e0809d0..ba198f0 100644 --- a/components/sections/OtherProjects.tsx +++ b/components/sections/OtherProjects.tsx @@ -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 (
-

+

Autres projets

@@ -25,13 +26,9 @@ export function OtherProjects({ locale, projects }: props) { href={`/${locale}/works/${project.slug}`} className="group block" > -
{project.title}
- -
- {project.title} -
- -

{project.subtitle}

+
{project.title}
+

{project.description}

+ cover image ))} diff --git a/content/projects/EverEastSolutions.mdx b/content/projects/EverEastSolutions.mdx index ca351c3..fc5a852 100644 --- a/content/projects/EverEastSolutions.mdx +++ b/content/projects/EverEastSolutions.mdx @@ -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 diff --git a/content/projects/GGCG.mdx b/content/projects/GGCG.mdx index ca351c3..581a73d 100644 --- a/content/projects/GGCG.mdx +++ b/content/projects/GGCG.mdx @@ -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
- 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.
- 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é.
diff --git a/content/projects/MGDev.mdx b/content/projects/MGDev.mdx index ca351c3..6804b67 100644 --- a/content/projects/MGDev.mdx +++ b/content/projects/MGDev.mdx @@ -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 diff --git a/content/projects/Threadbase.mdx b/content/projects/Threadbase.mdx index c60b63a..a7acc51 100644 --- a/content/projects/Threadbase.mdx +++ b/content/projects/Threadbase.mdx @@ -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
- 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).
- 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.
diff --git a/content/projects/template.mdx b/content/projects/template.mdx new file mode 100644 index 0000000..21bb592 --- /dev/null +++ b/content/projects/template.mdx @@ -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 +--- + +
+

La mission

+ + +
+ +
+
+ +
+
+
+ + + + diff --git a/lib/projects/get-projects.ts b/lib/projects/get-projects.ts index dd80a93..c06ea3e 100644 --- a/lib/projects/get-projects.ts +++ b/lib/projects/get-projects.ts @@ -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); } diff --git a/lib/projects/types.ts b/lib/projects/types.ts index 6e06cd6..94860f3 100644 --- a/lib/projects/types.ts +++ b/lib/projects/types.ts @@ -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; diff --git a/public/images/projects/EverEastSultions/preview-1.jpg b/public/images/projects/evereast/cover.png similarity index 100% rename from public/images/projects/EverEastSultions/preview-1.jpg rename to public/images/projects/evereast/cover.png diff --git a/public/images/projects/evereast/preview-1.png b/public/images/projects/evereast/preview-1.png new file mode 100644 index 0000000..b81ee27 Binary files /dev/null and b/public/images/projects/evereast/preview-1.png differ diff --git a/public/images/projects/ggcg/cover.png b/public/images/projects/ggcg/cover.png new file mode 100644 index 0000000..dd477fc Binary files /dev/null and b/public/images/projects/ggcg/cover.png differ diff --git a/public/images/projects/ggcg/preview-1.png b/public/images/projects/ggcg/preview-1.png new file mode 100644 index 0000000..dd477fc Binary files /dev/null and b/public/images/projects/ggcg/preview-1.png differ diff --git a/public/images/projects/mgdev/cover.png b/public/images/projects/mgdev/cover.png new file mode 100644 index 0000000..5910746 Binary files /dev/null and b/public/images/projects/mgdev/cover.png differ diff --git a/public/images/projects/mgdev/preview-1.png b/public/images/projects/mgdev/preview-1.png new file mode 100644 index 0000000..5910746 Binary files /dev/null and b/public/images/projects/mgdev/preview-1.png differ diff --git a/public/images/projects/threadbase/cover.png b/public/images/projects/threadbase/cover.png new file mode 100644 index 0000000..0f14f12 Binary files /dev/null and b/public/images/projects/threadbase/cover.png differ diff --git a/public/images/projects/threadbase/preview-1.png b/public/images/projects/threadbase/preview-1.png new file mode 100644 index 0000000..0f14f12 Binary files /dev/null and b/public/images/projects/threadbase/preview-1.png differ