AstroStarter

astro-frame-shift — Astro Starter Template

By EmaSuriano

A minimalist photo gallery template built with Astro, using view transitions, light and dark themes, and a responsive masonry layout, with over 60 sample images and metadata such as categories and photographer credits.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Three page types: home gallery grid, category pages, and image detail pages

02

Smooth navigation between pages using Astro View Transitions

03

Categories are real routes, not hidden on the client

04

Light and dark theme switching with persistent storage

05

CSS-based responsive masonry layout showing 1 to 4 columns depending on screen width

06

Image metadata centrally managed in gallery.json, including categories, dates, and photographer credits

Template Details

This is a minimalist photo gallery starter built with Astro. Pages are statically generated and include a home gallery grid, category pages, and individual image detail pages; navigation transitions use Astro View Transitions, and categories are implemented as real routes (/category/{slug}/) so transitions work.

Content data is centralized in src/data/gallery.json, where each record contains the image URL, alt text, title, description, category, date, and photographer name with an optional link. Images can belong to multiple categories, and related images are sorted by tag overlap. The repository includes over 60 sample images covering categories such as architecture, nature, street photography, and portraits.

The layout uses a CSS-based masonry grid that displays 1 to 4 columns depending on screen width; images are output through Astro's Image component and accompanied by a build-time image URL validation script. Theme switching supports light and dark color schemes and persists locally, the interface has no borders or shadows, and image information appears only on hover.

Before use, note the following: licenses for third-party assets such as sample images and fonts (Inter, JetBrains Mono) must be checked separately; image URL validation depends on external network reachability; and the template uses yarn as its package manager command.

AstroStarter

Is it right for your project?

Use Cases

  • Building a personal photography portfolio site
  • Creating a minimalist image-focused portfolio
  • Gallery projects that need category browsing and image detail pages
  • Static sites that want to use view transitions to improve browsing continuity

Suitable For

  • Developers familiar with Astro and JSON data configuration
  • Individuals or teams needing a minimalist visual style photo gallery
  • Projects that accept yarn as the package manager command
  • Users willing to verify third-party image and font licenses themselves

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Install dependencies with yarn install and start the local development server with yarn dev (default localhost:4321)

  2. 2

    Add or replace image entries in src/data/gallery.json following the existing field structure

  3. 3

    Run yarn check-images to validate image URLs; validation also runs automatically during build

  4. 4

    Adjust theme colors in tailwind.config.mjs; light mode uses the stone palette and dark mode uses the slate palette

  5. 5

    Third-party assets such as sample images and fonts must be confirmed separately under their respective licenses

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This 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

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • 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

  • The template states compatibility with Astro 7; before use, confirm that the Astro version in use is compatible with this theme.
  • Image URL validation depends on external network reachability and may fail in offline or network-restricted environments.
  • The build process automatically runs image URL validation; if external images are unreachable, the build may fail.
  • The template uses Inter and JetBrains Mono fonts, whose licenses must be checked separately and may differ from the code license.
  • The repository includes over 60 sample images; the licenses for these third-party image assets must be confirmed separately and are not granted along with the code license.
  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and 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

This theme is **Astro 7 ready**.

Original README

Run `yarn check-images` to verify all URLs are accessible

Original README

Validation runs automatically during build process

Original README

Clean typography with Inter and JetBrains Mono fonts

Original README

60+ curated images with metadata

Original README
https://github.com/EmaSuriano/astro-frame-shift/blob/main/LICENSE.mdhttps://github.com/EmaSuriano/astro-frame-shift/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. 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
Astro Themes
Documentation and maintenance reference score
More documented · 83 / 100
Technologies
Astro
Website type
Starter
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-09-25
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

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.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 5166e3c1acb3d44d8aea038f7772d8d3af732d188d4a756018e5441480d5d3a4

2026-10-02T14:54:12.481Z

Source file / repository
# Astro Frame Shift - Minimalist Photo Gallery

A clean, minimalist photo gallery built with Astro featuring smooth transitions, dark/light theme support, and responsive masonry layout.

This theme is **Astro 7 ready**.

## Screenshots 📸

Captured from the [live demo](https://emasuriano.github.io/astro-frame-shift/) with [shot-scraper](https://github.com/simonw/shot-scraper). Light and dark run as parallel CI jobs via [`shots-light.yml`](shots-light.yml) / [`shots-dark.yml`](shots-dark.yml) (workflow: [`.github/workflows/screenshots.yml`](.github/workflows/screenshots.yml)). Home, Category, and Image detail.

| Light | Dark |
| ----- | ---- |
| ![Home - Light](screenshots/home-light.png) | ![Home - Dark](screenshots/home-dark.png) |
| ![Category - Light](screenshots/category-light.png) | ![Category - Dark](screenshots/category-dark.png) |
| ![Image - Light](screenshots/image-light.png) | ![Image - Dark](screenshots/image-dark.png) |

## ✨ Features

- **Minimalist Design**: Clean, borderless interface with no shadows or visual clutter
- **Dark/Light Theme**: Persistent theme switching with smooth transitions
- **Responsive Masonry Layout**: CSS-based masonry layout that adapts to all screen sizes
- **Image Validation**: Build-time TypeScript script to verify all image URLs are working
- **Smooth Transitions**: Astro View Transitions for seamless navigation between pages
- **Category routes**: Filter tags are real pages (`/category/{slug}/`) so view transitions work; client-side hide broke them
- **Hover Effects**: Image information appears only on hover for maximum minimalism
- **Performance Optimized**: Static site generation with optimized images using Astro's Image component

## 🎨 Design Philosophy

This gallery embraces ultra-minimalism:

- No borders or shadows
- Clean typography with Inter and JetBrains Mono fonts
- Information only appears on hover
- Stone/slate color palette for subtle elegance
- Generous white space and clean layouts

## 🚀 Project Structure

```text
/
├── public/
│   └── favicon.svg
├── src/
│   ├── components/
│   │   └── ThemeToggle.astro          # Dark/light theme toggle
│   ├── content/
│   │   └── config.ts                  # Content collection schema
│   ├── data/
│   │   └── gallery.json               # 60+ curated images with metadata
│   ├── layouts/
│   │   └── Layout.astro               # Main layout with theme persistence
│   ├── pages/
│   │   ├── index.astro                # Gallery grid page
│   │   └── image/
│   │       └── [id].astro             # Individual image detail page
│   └── styles/
│       └── global.css                 # Global styles
├── scripts/
│   └── check-images.ts                # Image URL validation script
└── package.json
```

## 🖼️ Gallery Features

- **60+ Images**: Diverse collection spanning multiple categories
- **Category Organization**: Architecture, Nature, Street Photography, Portraits, and more
- **Photographer Attribution**: Credit with optional links to photographer profiles
- **Related Images**: Images can have multiple categories; related images are ranked by tag overlap
- **Responsive Images**: Optimized loading with Astro's Image component

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command                | Action                                           |
| :--------------------- | :----------------------------------------------- |
| `yarn install`         | Installs dependencies                            |
| `yarn dev`             | Starts local dev server at `localhost:4321`      |
| `yarn build`           | Build your production site to `./dist/`          |
| `yarn preview`         | Preview your build locally, before deploying     |
| `yarn check-images`    | Validate all gallery image URLs                  |
| `yarn astro ...`       | Run CLI commands like `astro add`, `astro check` |
| `yarn astro -- --help` | Get help using the Astro CLI                     |

## 🛠️ Development

### Adding New Images

Edit `src/data/gallery.json` to add new images:

```json
{
  "src": "https://example.com/image.jpg",
  "alt": "Image description",
  "title": "Image Title",
  "description": "Detailed description of the image",
  "categories": ["Primary Tag", "Secondary Tag"],
  "date": "2024-01-01",
  "photographer": "Photographer Name",
  "photographerLink": "https://photographer-website.com"
}
```

### Image Validation

The project includes automatic image URL validation:

- Run `yarn check-images` to verify all URLs are accessible
- Validation runs automatically during build process
- Failed URLs are reported for manual review

### Theme Customization

The project uses Tailwind CSS with a stone/slate color palette:

- Light mode: Stone colors (warm, neutral)
- Dark mode: Slate colors (cool blue-gray undertones)
- Easy to customize in `tailwind.config.mjs`

## 📱 Responsive Design

- **Mobile First**: Optimized for mobile viewing
- **Masonry Layout**: 1-4 columns based on screen size
- **Touch Friendly**: Proper hover states and touch interactions
- **Performance**: Lazy loading and optimized images

## 🎯 Performance Features

- **Static Site Generation**: Pre-rendered for maximum speed
- **Image Optimization**: Automatic WebP conversion and responsive sizes
- **View Transitions**: Smooth navigation without full page reloads
- **Minimal JavaScript**: Theme persistence and hover effects only
- **CSS-Based Masonry**: No JavaScript dependencies for layout
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.