Skip to main content

Command Palette

Search for a command to run...

React Portfolio Template — Dark/Light Mode, Bilingual (EN+FR) & TypeScript

A fully responsive, customizable portfolio starter built with React 19, Vite 7, and TypeScript — get your portfolio live in under an hour.

Updated
3 min read
React Portfolio Template — Dark/Light Mode, Bilingual (EN+FR) & TypeScript

If you've ever spent weeks building your personal portfolio from scratch — tweaking layouts, setting up routing, wiring up i18n, debugging responsive breakpoints — you know how much time it takes before you even write a single line of content.

I did exactly that. Then I turned it into a template so nobody else has to.

What's inside

The template is a complete, production-ready portfolio website with 9 fully built sections:

  • Home — animated hero with dynamic role display

  • About — education timeline + ID card layout

  • Skills — icon grid

  • Certificates — card grid with modal detail view

  • Achievements — card grid with modal detail view

  • Experience — timeline with modal detail view

  • Projects — card grid with modal detail view

  • Contact — form with validation + contact info cards

  • Footer


Tech stack

  • React 19 + Vite 7 — fast dev experience, instant HMR

  • TypeScript 5.8 — fully typed throughout

  • React Router DOM 7 — client-side routing

  • i18next — internationalization, English and French included

  • Lucide React — clean, consistent icons

  • Pure CSS — no UI library, fully custom styling with CSS variables


Key features

🌙 Dark / Light theme

One-click theme toggle. Preference is saved to localStorage so it persists across visits. The entire color system is built on CSS custom properties — swapping themes is a single data-theme attribute change on the root element.

🌍 Bilingual support

All content lives in two JSON files — src/locales/en/lang.json and src/locales/fr/lang.json. Switch languages from the header dropdown. Adding a third language takes less than 10 minutes.

✏️ JSON-driven content

You don't need to touch any component code to make this template yours. Every piece of text, every project, every certificate, every experience entry — it all lives in one JSON file. Edit the JSON, save, done.

📱 Fully responsive

Built mobile-first with breakpoints at 480px, 768px, 1024px, and 1200px. Tested on all screen sizes.


How to get started

# Install dependencies
npm install

# Start dev server
cd portfolio-template
npm run dev

Then open src/locales/en/lang.json and replace the placeholder content with your own details. That's it.

Full setup instructions are in the README included with the template.


Live demo

See it running here → click here


Get the template

The full source code is available on Gumroad for $19.

👉 click here

What's included:

  • Full source code (ZIP)

  • README with step-by-step customization guide

  • Lifetime access


Built with React 19, Vite 7, TypeScript, i18next, and a lot of CSS variables.