TEMPLATE

Bilingual Astro portfolio theme for designers, with case studies and ready SEO

Astro portfolio theme for designers, in French and English: case studies, services, about page, technical SEO in place and a guide to keep your old URLs.

€79
One-time payment

Your free account is created with your email and a code sent by email, no password needed. You then pay on the Stripe page.

Sold only in the 27 EU member states, excluding overseas and special tax territories (terms of sale, art. 2): billing address and payment method from this area.

Digital file delivered as soon as you pay: by ticking the box above, you waive your right of withdrawal (see the terms of sale).

Final price · VAT not applicable, art. 293 B of the French Tax Code

Commercial licence · Read the licence

BUYTRY

Overview

Description

This theme is for independent designers and small studios who want to show their work on a fast site, in French and English, without starting from a blank page. It gives you a complete portfolio built with Astro: detailed case studies, disciplines, services, About and Contact pages, with the technical SEO already in place. The home page carries your name and your job as its main heading. Each case study sits on a flat colour plate, with editorial typography and a plum accent, in light and dark modes alike. If you are leaving an existing site, for instance on Webflow or WordPress, a migration guide and a coverage check help you keep your old addresses.

The theme helps you keep your URLs; it does not guarantee any ranking. It does not import your old content: you convert it to Markdown by following the guide.

Specifications

Page templates9
Languages2
Demo entries8 in French, 6 in English
Client-side JavaScript0 KB
FormatsAstro 7, Markdown, TypeScript, CSS
Licensecommercial (page in French)
Version1.0.0 of November 11, 2026

Contents

  • 9 page templates, in French and English: home, paginated case study list, case study, discipline, services, about, contact, simple page and not-found page, plus one RSS feed per language.
  • A complete case study page: breadcrumb, project facts (client, year, role, deliverables), table of contents built from the section headings, key figures, gallery, links to the previous and next case study. Context, method and results are written in the Markdown body.
  • 2 languages out of the box: French at the root, English under /en, with hreflang pairs between published translations. A page without a translation emits none, and the language switch then points to the other home page. The code accepts more languages.
  • A single configuration file, theme.config.ts: site address, default language, site name, home title, description and job title per language, publisher for structured data (person, professional service or organisation), number of case studies per list page, and the permalink pattern of each page type.
  • A colour plate per case study: the colour follows the position of the project in the grid, through a cycle you set in src/styles/tokens.css. A plate field in a case study’s frontmatter forces its colour.
  • The search engine plumbing, generated from a single route table: canonical URLs without a trailing slash, reciprocal hreflang pairs, noindex available page by page, a sitemap that leaves out pages not to be indexed, robots.txt and JSON-LD structured data (WebSite, Article, CollectionPage, ProfilePage, ContactPage, WebPage with its Service items, FAQPage, BreadcrumbList).
  • Redirects in a single file, redirects.json, written to dist/_redirects for the host, with a fallback page for each redirected address if the host does not read that file.
  • Two checks to run before going live: npm run check:seo checks canonicals, hreflang pairs, the sitemap, JSON-LD, internal links and redirects; npm run check:coverage compares your old URLs (Search Console “Pages” export, a list of URLs or a sitemap) with the built site and lists those that would end in an error.
  • A migration guide in French and English (docs/migration.fr.md and docs/migration.md): inventory of the old URLs, content export from Webflow or WordPress, field mapping to the frontmatter, slugs copied exactly, permalinks and redirects, coverage check before the switch.
  • A demo portfolio, made up, for a fictional designer with fictional clients: 8 case studies in French and 6 in English, including 6 translated pairs. The demo images are drawn from the theme tokens; none was generated by AI. The built demo has 36 HTML pages, and its redirects.json holds 3 sample redirects. The demo address is example.com: replace all the content with your own.
  • Version 1.0.0, with its changelog, and 119 files in total.

Theme files:

  • At the root: README.md, README.fr.md, CHANGELOG.md, package.json, package-lock.json, .nvmrc, theme.config.ts, astro.config.mjs, tsconfig.json and redirects.json.
  • src/content/: case studies, disciplines, services and pages, one folder per language.
  • src/components/, src/layouts/, src/lib/, src/pages/ and src/styles/: the theme code.
  • src/assets/: demo images.
  • integrations/: writes _redirects and _headers.
  • scripts/: check-seo.mjs and check-coverage.mjs.
  • docs/: migration guide in French and English, sample export.

The licence text, LICENCE.txt, sits at the root of the downloaded archive.

Production and AI

The theme code (Astro templates, CSS, check scripts), the demo content and the guides were produced with an AI assistant, then reviewed and tested before release: build, type check, SEO checks, accessibility in light and dark modes, contrast and no horizontal scrolling. No image was generated by AI.

Formats and compatibility

  • Requirement: Node 22.23.4 or later. It is the minimum version required by Astro 7: with an older Node, the install shows a warning and the build fails. The .nvmrc file gives the theme’s development version.
  • Astro 7, fully static output, with no JavaScript sent to the browser (0 KB client-side): the only <script> tags carry the JSON-LD data.
  • Markdown for content, with a strict frontmatter: an unknown field, a duplicate slug within a language or an unknown discipline fails the build and names the files.
  • TypeScript for the configuration and the theme code.
  • CSS without a framework, on design tokens (colours, type scale, spacing, radii) gathered in src/styles/tokens.css. Light and dark modes follow the visitor’s system setting, without a toggle.
  • Fonts: Bodoni Moda for headings and Albert Sans for text, under the SIL Open Font License 1.1, referenced through npm and installed with the dependencies. No font file in the archive, no request to an external font service.
  • Hosting: any static host that serves projets/mon-projet.html at /projets/mon-projet and reads _redirects and _headers. As an option, Astro’s Node adapter serves real permanent redirects from the application, with the same redirects.json.

Good to know before buying:

  • The theme does not convert your old portfolio: the guide explains the export, the conversion to Markdown and the field mapping.
  • Set site in theme.config.ts to your final address before the final build: canonicals, sitemap and hreflang depend on it, and an address left on the demo one passes every check without a warning.
  • The coverage check compares paths without host or trailing slash. Redirecting the non-canonical host (with or without www) is set up at your host.
  • Not included: automatic importer, MDX, search, comments, newsletter form, light or dark toggle, share buttons, wildcard redirects.

Licence

The theme is sold with the commercial licence (page in French): you may use and modify it for your portfolio and for your clients’ sites, but you may not resell, share or redistribute its files, even modified, or publish them as a reusable theme or template, public repositories included. The fonts keep their own licence.

Further reading

Version history

1.0.0 (11 November 2026): first release.

About the author

Frequently asked questions

Which Node version does the theme need?
Node 22.23.4 or later, the minimum version for Astro 7. Below that, the build stops with a message from Astro. The built site is fully static: it needs no Node server once online, unless you choose the Node adapter to serve the redirects.
Does the theme import my old portfolio automatically?
No, version 1.0.0 has no importer. The migration guide shows how to export your projects from Webflow or WordPress, convert them to Markdown and copy each slug exactly. Before the switch, npm run check:coverage lists every old URL that would be neither served nor redirected. The theme helps you keep your addresses; it does not guarantee any ranking.
Can I choose the colour of each case study?
Yes. By default, the colour follows the position of the project in the grid, through the plate cycle defined in src/styles/tokens.css, in light and dark modes. The plate field in the frontmatter forces the colour of a case study, and you change the hues themselves in the tokens.