Preview 1 of 4
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.
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 templates | 9 |
|---|---|
| Languages | 2 |
| Demo entries | 8 in French, 6 in English |
| Client-side JavaScript | 0 KB |
| Formats | Astro 7, Markdown, TypeScript, CSS |
| License | commercial (page in French) |
| Version | 1.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, withhreflangpairs 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. Aplatefield 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
hreflangpairs,noindexavailable page by page, a sitemap that leaves out pages not to be indexed,robots.txtand JSON-LD structured data (WebSite,Article,CollectionPage,ProfilePage,ContactPage,WebPagewith itsServiceitems,FAQPage,BreadcrumbList). - Redirects in a single file,
redirects.json, written todist/_redirectsfor 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:seochecks canonicals,hreflangpairs, the sitemap, JSON-LD, internal links and redirects;npm run check:coveragecompares 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.mdanddocs/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.jsonholds 3 sample redirects. The demo address isexample.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.jsonandredirects.json. src/content/: case studies, disciplines, services and pages, one folder per language.src/components/,src/layouts/,src/lib/,src/pages/andsrc/styles/: the theme code.src/assets/: demo images.integrations/: writes_redirectsand_headers.scripts/:check-seo.mjsandcheck-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
.nvmrcfile 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.htmlat/projets/mon-projetand reads_redirectsand_headers. As an option, Astro’s Node adapter serves real permanent redirects from the application, with the sameredirects.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
siteintheme.config.tsto your final address before the final build: canonicals, sitemap andhreflangdepend 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
- To present the same case studies in a meeting: the presentation template for freelance designers.
- For an editorial blog rather than a portfolio, with the same migration method: the bilingual editorial blog Astro theme.
Version history
1.0.0 (11 November 2026): first release.




