Guillaume Duhan
Chief Technical Officer, Entrepreneur & Youtuber
Hi! I'm Guillaume, a CTO turned entrepreneur. Welcome to my corner of the Internet, where I showcase my work, craft, unfinished or imperfect projects, and the many other things I'm exploring.
Throughout the past decade, I have led 27+ engineering teams and built a €1M+ agency from the ground up. During this time, I continuously refined my craft by sharpening my eye through the inspiring work of many other builders, founders, and engineers, and working hard on my own skills to meet my ever-evolving taste for products that ship, scale, and last.
My appetite for sharing recently led me to focus on what I believe is the most underrated leverage in tech: teaching. Through @codewithguillaume and its 180k+ subscribers, I've taught 5M+ students and now help founders scale with the systems, code, and mindset it took me a decade to figure out.
When not building, I like sharing what I learned on my channel, through tutorials and live coding sessions. You can also find me sketching new ideas on a whiteboard or just walking around enjoying a nice cup of coffee.
Hiring
Projects
Socials
Articles
- 100 Free Platforms to Launch Your SaaS Product in 2026Mar 20, 2026
- Newsletters Are the Most Underrated Business Model in 2026Mar 16, 2026
- How to Set Up Dark Mode with TailwindCSS 4Nov 30, 2025
- I've build permissions for my Next.js 15 app with Permit.ioApr 1, 2025
- I've build permissions for my Next.js 15 app with Permit.ioApr 1, 2025
- Les différents modèles de récupération de données dans ReactDec 6, 2024
- Revolutionizing Fund Management: The Evolution of Allocations.com in 2025Nov 27, 2024
- How to Create a Search Bar with React: A Step-by-Step GuideAug 24, 2024
- Quick start guide Next.js with Auth0Jul 15, 2024
- I built a custom Dark Mode for React + TailwindcssJun 30, 2024
- Deep dive into Loops in ReactJun 3, 2024
- I wrote a comprehensive Guide to style React AppsJun 2, 2024
- I've build a reusable Team component for Next.js 14 using SupabaseMay 29, 2024
- I built my own Dark Mode with TailwindCSS (without using Next Themes)May 28, 2024
- Why I Chose Vite.js for My React ProjectsMay 27, 2024
- I've build a reusable Team component for Next.js 14 using SupabaseMay 23, 2024
- Good practices for Javascript Applications (Clean Code)May 16, 2024
- Managing Permissions with Permit.io in Nuxt 3 & Node.js (2024)Jan 4, 2024
- Learn Nextjs 14 & Supabase — Full course for beginners [2 hours] 2024Jan 2, 2024
- Get Started with Next.js 14 & SupabaseDec 10, 2023
- Building a Full-Stack Web App with Next.js 14, Resend & SupabaseDec 6, 2023
- Building a Full-Stack Web App with Next.js 14, Resend & SupabaseDec 6, 2023
- Learn Resend in 2 hours — full course 4K 2023Dec 3, 2023
- Learn Resend in 2 hours - full course 4K 2023Dec 3, 2023
- Get started with ResendNov 19, 2023
- Get Started with ResendNov 19, 2023
- 10 reasons why Tally.so is the best form toolOct 9, 2023
- Embed your forms with Tally.soOct 9, 2023
- Embed your forms with Tally.soOct 9, 2023
- Create templates with TallyJun 20, 2023
- Create templates with TallyJun 20, 2023
- Create a form on Tally.soJun 19, 2023
- Create a form with Tally.soJun 18, 2023
- Edge functions with SupabaseApr 8, 2023
- Tailwindcss Masonry Columns bug fixApr 8, 2023
- Edge functions with SupabaseApr 7, 2023
- Storage with SupabaseMar 29, 2023
- Storage with SupabaseMar 28, 2023
- Schemas with SupabaseMar 26, 2023
- Schemas with SupabaseMar 25, 2023
- Triggers with SupabaseMar 23, 2023
- Triggers with SupabaseMar 22, 2023
- Functions in SupabaseMar 19, 2023
- Functions in SupabaseMar 18, 2023
- Relations with SupabaseMar 15, 2023
- Relations with SupabaseMar 14, 2023
- Subscribe to events on SupabaseMar 12, 2023
- Subscribe: souscrire à des évènements avec SupabaseMar 12, 2023
- Subscribe to events with SupabaseMar 11, 2023
- Read, insert, update or delete with SupabaseMar 9, 2023
- Supabase: open-source backend-as-a-serviceMar 8, 2023
- Email templates with SupabaseMar 7, 2023
- Emails templates with SupabaseMar 6, 2023
- Recover your password with SupabaseMar 4, 2023
- Recover your password with SupabaseMar 3, 2023
- User Management with SupabaseMar 1, 2023
- User management with SupabaseFeb 28, 2023
- Authentication with SupabaseFeb 22, 2023
- Authentication with SupabaseFeb 21, 2023
- Tables with SupabaseFeb 17, 2023
- Tables with SupabaseFeb 16, 2023
- Create a project with SupabaseFeb 15, 2023
- Create a project with SupabaseFeb 14, 2023
- Learn Nuxt 3 — Full course for beginners [3 hours] 2023Feb 10, 2023
- Learn Nuxt 3 — Full course for beginners [3 hours] 2023Feb 9, 2023
- Create a documentation + API with Nuxt.js 3Feb 8, 2023
- Create a documentation + API with Nuxt.js 3Feb 7, 2023
- Nuxt-content with Nuxt 3Feb 4, 2023
- Nuxt-content with Nuxt 3Feb 3, 2023
- SEO with Nuxt 3Feb 1, 2023
- SEO with Nuxt 3Jan 31, 2023
- Supabase vs Firebase: quelles différences?Jan 28, 2023
- useFetch, useLazyfetch with Nuxt 3Jan 26, 2023
- useFetch, useLazyfetch with Nuxt 3Jan 25, 2023
- SSR, SWR & Hybrid with Nuxt 3Jan 23, 2023
- SSR, SWR & Hybrid in Nuxt 3Jan 22, 2023
- API server with Nuxt 3Jan 21, 2023
- API server with Nuxt 3Jan 20, 2023
- State management with Nuxt 3Jan 19, 2023
- State management with Nuxt 3Jan 18, 2023
- Modules in Nuxt.js 3Jan 15, 2023
- Modules in Nuxt 3Jan 14, 2023
- Middleware in Nuxt.js 3Jan 12, 2023
- Middlewares with Nuxt 3Jan 11, 2023
- Composables with Nuxt 3Jan 8, 2023
- Composables with Nuxt 3Jan 7, 2023
- Images & assets in Nuxt 3Jan 6, 2023
- Layouts with Nuxt 3Jan 5, 2023
- Images & assets in Nuxt 3Jan 5, 2023
- Layouts with Nuxt 3Jan 4, 2023
- Components in Nuxt 3Jan 3, 2023
- Components in Nuxt 3Jan 2, 2023
- Pages with Nuxt 3Jan 1, 2023
- How to create a Nuxt 3 appDec 31, 2022
- Pages with Nuxt 3Dec 31, 2022
- Learn Tailwindcss - full course for beginners of 4 hoursDec 29, 2022
- How to create a Nuxt 3 appDec 29, 2022
- Learn Tailwindcss — full course for beginners of 4 hoursDec 28, 2022
- Design system with Tailwindcss?Dec 26, 2022
- Design system with TailwindcssDec 25, 2022
- How to use Animations & Transitions in TailwindcssDec 23, 2022
- How to use animations and transitions in TailwindcssDec 22, 2022
- Effects & Filters with TailwindcssDec 20, 2022
- How to use effects with TailwindcssDec 19, 2022
- Use of borders with TailwindcssDec 18, 2022
- Use of borders in TailwindcssDec 18, 2022
- Layouts with TailwindcssDec 15, 2022
- Layouts with TailwindcssDec 14, 2022
- Grids with TailwindcssDec 13, 2022
- C'est quoi Row Level Security de Supabase?Dec 12, 2022
- Grids with TailwindcssDec 12, 2022
- Comment utiliser Supabase avec Next.js?Dec 11, 2022
- Pourquoi utiliser du serverless?Dec 10, 2022
- Qu'est-ce que le Back-end as a Service (BaaS) ?Dec 10, 2022
- C'est quoi serverless?Dec 10, 2022
- Understand flex with TailwindcssDec 10, 2022
- Créer une application React avec SupabaseDec 9, 2022
- Understand flex with TailwindcssDec 9, 2022
- Comment accéder à la documentation de Supabase?Dec 7, 2022
- 10 raisons d'utiliser SupabaseDec 7, 2022
- Commencer avec Supabase en 10 étapesDec 7, 2022
- Comment accéder à ma base de données?Dec 7, 2022
- Créer un clone de Twitter avec SupabaseDec 7, 2022
- Pourquoi choisir Supabase?Dec 5, 2022
- Comment créer un compte sur Supabase?Dec 5, 2022
- C'est quoi Supabase?Dec 5, 2022
- Font style & typography in TailwindcssNov 29, 2022
- Font style & typography in TailwindcssNov 28, 2022
- Customization with TailwindcssNov 27, 2022
- Customization with TailwindcssNov 26, 2022
- Colors with TailwindcssNov 24, 2022
- Colors with TailwindcssNov 23, 2022
- How to become a developer in 2023?Nov 19, 2022
- How to become a developer in 2023?Nov 18, 2022
- Vue 3 basics in 10 minutesNov 6, 2022
- Vue 3 basicsNov 5, 2022
- Components inside or outside App folder in Next 13?Nov 3, 2022
- Basics of Next 13 in 10 minutesNov 2, 2022
- Next 13: what's new?Oct 30, 2022
- What's new with Next 13?Oct 30, 2022
- Landing page inside your app?Oct 26, 2022
- Landing page inside your app?Oct 25, 2022
- That's what I use (stack and products)Oct 21, 2022
- That's my stack (and products)Oct 21, 2022
- Coach App with Next.js & Supabase in 56 minutesOct 7, 2022
- Coach App with Next.js & Supabase in 56 minutesOct 6, 2022
- Next.js in 51 minutesSep 30, 2022
- Next.js tutorial in 51 minutesSep 29, 2022
- Next + Supabase in 16 minutes!Sep 9, 2022
- Create a blog with Vue 3 + Tailwindcss + SupabaseSep 7, 2022
- Supabase + Vue 3 in 12 minutesAug 27, 2022
- The problem with customer onboardings.Aug 20, 2022
- Discover Nuxt.js in 64 minutes (video)Aug 14, 2022
- Vue + Tailwindcss configAug 14, 2022
- Deploy vue app to NetlifyAug 14, 2022
- Deploy NextJs to NetlifyAug 14, 2022
- Learn Nuxt.js in 64 minutesAug 13, 2022
- Deploy Vue app to NetlifyAug 13, 2022
- Deploy Next.js to NetlifyAug 13, 2022
- Access Ghost local server on networkAug 7, 2022
- Vue 3: mountedFeb 24, 2022
- React/Next.js: override bootstrap themeNov 28, 2021
- Photoshop: triggering a script using a keyboard shortcutJul 9, 2021
- Vue + Tailwindcss configJun 20, 2021
- Vue 3: propsJun 19, 2021
- Vue 3: watchJun 16, 2021
- Vue 3: computedJun 16, 2021
- Vue 3: reactive propertyJun 16, 2021
- Svelte + Routify + TailwindcssMay 29, 2021
- Vue + Firebase: how to guard routes?Apr 29, 2021
- Svelte + Routify + Firebase setupMar 27, 2021
- Svelte + TailwindcssMar 25, 2021
- Comprendre la data en 3 minutesDec 31, 2020
- La différence entre tous et toutMay 20, 2020
- Create a Vue application with TypescriptMay 16, 2020
- La différence entre leur et leursMay 13, 2020
- La différence entre ou et oùMay 12, 2020
- La différence entre et et estMay 11, 2020
- Le monde du travail en 2050Jun 28, 2019
- 5 erreurs courantes chez les créateurs d'entrepriseJul 7, 2018
- Je vais supprimer tous mes tweets depuis 2010Sep 27, 2017
- C'est quoi le CSS? — Comprendre en 3 minutesSep 11, 2017
- 5 façons de faire connaitre son entrepriseSep 9, 2017
- Pourquoi les autres réussiront et pas vousMar 12, 2017
- Si vous voulez être heureux…Mar 9, 2017
- Ne plus faire de fautes d'orthographe — mon parcours d'étudiantMar 3, 2017
- Progresser sans arrêtFeb 19, 2017
- La nostalgie des jeux-vidéosFeb 18, 2017
- Ceci n'est pas un article de merdeFeb 10, 2017
- Comment j'ai publié mon premier roman (partie 4)Nov 27, 2016
- La culture du blogNov 23, 2016
- Comment j'ai publié mon premier roman (partie 3)Nov 20, 2016
- N'achetez plus, réparez!Nov 4, 2016
- Comment j'ai publié mon premier roman (partie 2)Nov 3, 2016
- You think it's over and… It's notNov 1, 2016
- Comment j'ai publié mon premier roman (partie 1)Oct 28, 2016
- Les jeunes français sont angoissés par l'avenirSep 21, 2016
- Un jour j'ai commencé à écrire sur un blog et ça a pluJun 14, 2016