Project index with live preview: hovering or focusing a project title switches the large image
portfolio-template (nicolascadet-ops) — Astro Portfolio Template
By nicolascadet-ops
An Astro portfolio template for photographers, designers and studios. Projects are managed in Markdown, the homepage offers hover live previews, and project pages use editorial image-text layouts with lightbox viewing.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Project pages include year, location, client and an editorial full-width/half-width image sequence
Lightbox supports full-screen viewing, arrow key navigation, Esc to close
Content managed in Markdown; adding a project requires only a .md file plus an image folder
Responsive WebP image sizes generated automatically at build time
Semantic HTML, keyboard-accessible navigation, visible focus, alt text and reduced-motion support
Template Details
This is an image-centric dark portfolio template built with Astro and output as a static site. Project content is maintained as Markdown files: each project corresponds to a .md file and an image folder, and responsive WebP image sizes are generated automatically at build time. The homepage provides a project index: hovering or focusing a project title switches the large preview on the right. Project pages show year, location, client, a short story, and an editorial image sequence alternating full-width and half-width; clicking any image opens a lightbox, with arrow keys to navigate and Esc to close. The template includes semantic HTML, keyboard-accessible navigation and lightbox, visible focus styles, alt text for every image, and reduced-motion support. The photographer Mara Ellis in the example is a fictional character, photos are from multiple Unsplash photographers, and clients, exhibitions and awards are fictional, for demonstration only.
Is it right for your project?
Use Cases
- Photographers building a personal portfolio, organizing images and captions by project
- Designers or illustrators showcasing series work, needing project detail pages with mixed text and images
- Small studios publishing case collections and wanting content maintained in Markdown
- Portfolio sites that need a dark, image-centric, statically output site
Suitable For
- Photographers, designers, illustrators and creative studios
- Developers or creators accustomed to managing content with Markdown
- Users who want to deploy the portfolio to static hosting platforms such as Cloudflare Pages
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 22.12 or higher; after installing dependencies run npm run dev, default address http://localhost:4321
- 2
Site information (name, email, city, Instagram) is edited in src/site.ts
- 3
Project content is located in src/content/work/*.md, one file per project, with images placed under src/assets/<project name>/
- 4
The portrait and bio correspond to src/assets/mara.jpg and src/pages/about.astro; colors and fonts are adjusted via CSS variables at the top of src/styles/global.css
- 5
When deploying to Cloudflare Pages, select the Astro framework preset, build command npm run build, output directory dist
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, commercially used and distributed for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Example photos are from multiple Unsplash photographers and are licensed under the Unsplash License, which is not part of this project's code license; when replacing with your own work, verify image licensing yourself.
- The template self-hosts the Schibsted Grotesk font under the SIL Open Font License, which differs from the project's MIT code license; redistributing the font must comply with OFL terms.
- Local running and building require Node.js 22.12 or higher; lower versions cannot be used.
- Deploying to Cloudflare Pages requires a Cloudflare account and connecting a Git repository, which is an external service dependency.
- Demo images, fonts, icons and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The photographs are free sample images from Unsplash by many different photographers, credited on every project page and listed in each project's Markdown file.
Original README
Typeface: [Schibsted Grotesk](https://fonts.google.com/specimen/Schibsted+Grotesk), SIL Open Font License.
Original README
Requires Node.js 22.12 or later.
Original README
https://github.com/nicolascadet-ops/portfolio-template/blob/main/LICENSEhttps://github.com/nicolascadet-ops/portfolio-template/blob/main/README.mdDashboard:** Workers & Pages → Create → Pages → Connect to Git → pick this repo.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- Partly documented · 73 / 100
- Technologies
- Astro
- Website type
- Portfolio · Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-03
- Screenshot last checked
- 2026-10-03
No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.
The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-04
Inspect the recorded source material
SHA-256: 9589cb9e2b63004c5ca21b572f5deeb2dfb9b40155cb56e0a0b64c4b525acb3f
2026-10-03T19:41:49.645Z
Source file / repository# Mara Ellis: Photography Portfolio Template A dark, image-first portfolio for photographers, designers, illustrators and studios. Built with [Astro](https://astro.build): projects are Markdown files, images are optimised automatically, and the output is a fast static site.  > **Mara Ellis is a fictional photographer.** The photographs are free sample images from Unsplash by many different photographers, credited on every project page and listed in each project's Markdown file. Clients, exhibitions and awards are fictional. ## Features - **Project index with live preview**: hover or focus a project title and the large preview changes. - **Project pages** with year, location and client, a short story, and an editorial image sequence that mixes full-width and half-width images. - **Lightbox**: click any image to view it full screen; arrow keys to move, Esc to close. - **Content in Markdown**: add a project by adding one `.md` file and a folder of images. - **Automatic image optimisation**: responsive WebP sizes generated at build time. - **Accessible**: semantic HTML, keyboard-friendly navigation and lightbox, visible focus, alt text for every image, reduced-motion support. - **Fast**: static HTML, one self-hosted font, almost no JavaScript. ## Run it locally Requires Node.js 22.12 or later. ```bash npm install npm run dev ``` Then open http://localhost:4321. ## Customise | What | Where | |---|---| | Name, email, city, Instagram | `src/site.ts` | | Projects | `src/content/work/*.md` (one file per project) | | Project images | `src/assets/<project-name>/` | | Your portrait and bio | `src/assets/mara.jpg` and `src/pages/about.astro` | | Colours and font | CSS variables at the top of `src/styles/global.css` | ### Add a project 1. Create a folder of images in `src/assets/my-project/`. 2. Copy one of the files in `src/content/work/` to `my-project.md` and edit the title, year, `order`, text and image list. 3. Run `npm run dev`. The project appears on the home page and gets its own page at `/work/my-project/`. ## Deploy to Cloudflare Pages - **Dashboard:** Workers & Pages → Create → Pages → Connect to Git → pick this repo. Framework preset: **Astro**. Build command: `npm run build`. Output directory: `dist`. - **CLI:** ```bash npm run build npx wrangler pages deploy dist --project-name mara-ellis ``` The site only rebuilds when you push changes. ## Credits - Typeface: [Schibsted Grotesk](https://fonts.google.com/specimen/Schibsted+Grotesk), SIL Open Font License. - Photographs: [Unsplash](https://unsplash.com) contributors under the [Unsplash License](https://unsplash.com/license). Each image's photographer and source link is in the `credit` and `source` fields of its project's Markdown file and is shown at the bottom of each project page. The About page photo (hands holding a camera, no face shown) is by Patrick Fore. - Built by **NC Atelier**. --- ### Want a site like this for your business? NC Atelier designs and builds fast, accessible websites for businesses in the UK, US and Canada. **Get in touch:** [ncatelier.com](https://ncatelier.com) · [LinkedIn](https://www.linkedin.com/in/cadetnicolas)
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
AstroPaper is a minimal, responsive, accessible, and SEO-friendly Astro blog theme. Articles are stored as Markdown/MDX in src/content/posts/, with subdirectories affecting URLs.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio
