Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A modern and clean Astro theme for personal portfolios and bilingual (French/English) blogs. Built with TypeScript, Tailwind CSS, and MDX.

A dark portfolio & blog theme for Astro with a live 5,000-particle Three.js background, blog system, and glassmorphism UI.
Astro Portfolio & Bilingual Blog Template is an open-source Astro portfolio and blog template that combines a personal portfolio with a bilingual French/English MDX blog, pre-configured with TypeScript, Tailwind CSS, and shadcn/ui.
Astro Portfolio & Bilingual Blog Template is a static-site template for developers who need a portfolio page plus a technical blog in two languages. It takes Markdown (.md) or MDX (.mdx) articles placed in src/features/blog/content/en/ and src/features/blog/content/fr/, plus project data defined in src/features/projects/service.ts, and outputs a fully static site into ./dist/ when you run the build command. The template runs on Astro, uses Bun as the default package manager (with npm, yarn, and pnpm supported), and is based on the personal portfolio of Bakate (https://www.bakateba.eu/).
en/ and fr/ content folders; the template ships with example posts to copy.projectsData array inside src/features/projects/service.ts and add translations in src/i18n/ui.ts../dist/ with no server required for hosting.src/i18n/ui.ts, and the template includes a basic i18n configuration for French and English..md or .mdx files into the en/ or fr/ content folders and filling in frontmatter such as title, description, pubDate, tags, and heroImage.src/features/projects/service.ts and adding localized descriptions in src/i18n/ui.ts.tailwind.config.mjs and src/styles/global.css or swapping components in src/components/ and src/features/**/components/.bun install (or npm install, yarn install, pnpm install).bun dev; the site runs at http://localhost:4321.src/features/blog/content/en/ or fr/, and portfolio data in src/features/projects/service.ts.bun build, which outputs the static files to ./dist/, then preview them locally with bun preview.Bun is the default package manager, and all documented commands use bun. The page also notes that npm, yarn, and pnpm work if you adapt the commands, such as replacing bun install with npm install.
Create a .md or .mdx file inside src/features/blog/content/en/ for English posts or src/features/blog/content/fr/ for French posts, then fill in the frontmatter fields shown in example-post.mdx. Place hero images in src/assets/blog/ or public/ and update the heroImage.url path.
Edit tailwind.config.mjs and src/styles/global.css to change the design system, or replace components in src/components/ and src/features/**/components/. Page layouts for the site are in src/layouts/.
Put Astro-managed images in src/assets/blog/ or static images in public/, then update the heroImage.url field in each post's frontmatter to point to the correct path. Project images can be imported as ImageMetadata objects in service.ts.
When you run bun dev, the site is served at http://localhost:4321. The production build output goes to ./dist/ and can be previewed locally with bun preview.
