# Astro Starter

An Astro starter project set up with pnpm, Biome, Stylelint, Husky, and Astro Sitemap, plus sensible VS Code defaults and recommended workspace extensions.

## Getting Started

1. Click "Use this template" and create a new repository.
2. In `astro.config.mjs`, update `site` from `https://mysite.com` to your site URL.
3. In `src/layouts/BaseLayout.astro`, update `siteName` to your site name.
4. Good to go!

## What's included

**Basics**
- A blank [Astro](https://astro.build/) project with TypeScript enabled
- `pnpm` package management plus `only-allow pnpm`
- Import aliases of `src` using `~` to enable using `import { Component } from '~/components'` 
- Basic meta tags and open graph tags in `layouts/BaseLayout.astro`
- `initial-scale=1` on `viewport` to prevent default mobile zoom-out
- Site name displays after the page title (`Page Title · Site Name`) on pages other than the main index
- [smartypants](https://github.com/othree/smartypants.js) smart quotes for page titles and descriptions

**Styles**
- Josh Comeau's [reset.css](https://www.joshwcomeau.com/css/custom-css-reset/)

**Linting and Formatting**
- Linting and formatting with [Biome](https://biomejs.dev/)
- Style linting with [Stylelint](https://stylelint.io/) and [stylelint-config-astro](https://github.com/mattpfeffer/stylelint-config-astro)

**VS Code**
- Format on save and on paste
- Default formatter set to Astro
- Workplace recommendations for [Astro](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode), [axe Accessibility Linter](https://marketplace.visualstudio.com/items?itemName=deque-systems.vscode-axe-linter), and [Biome](https://marketplace.visualstudio.com/items?itemName=biomejs.biome)

**Package.json scripts**
- `check` — Run Astro check + Biome lint and format
- `check:fix` — Run Astro check + Biome lint and format + fix errors
- `stylelint` — Run Stylelint
- `stylelint:fix` — Run Stylelint and fix errors

**Vision script** (requires `ANTHROPIC_API_KEY` in `.env.local`)

Generate AI metadata (title, description, tags) + EXIF sidecars for a photo album:

```bash
node --env-file=.env.local --experimental-strip-types scripts/vision.ts src/content/photos/albums/<album>
```

Optional flags:
- `--refresh` — overwrite existing JSON sidecars
- `--concurrency=N` — parallel API calls (default: 2)
- `--retries=N` — max retries on rate limits (default: 8)
- `--backoff-ms=N` — base backoff in ms (default: 1500)

**Husky**
- `pnpm check` on pre-commit

**Dependabot**
- Weekly dependency update checks
- All GitHub Action updates grouped in a single pull request
- All patch or minor package updates grouped in a single pull request
- All major package updates created as individual pull requests

**Config**
- Link prefetching enabled
- Dev toolbar disabled
- [Astro Sitemap](https://docs.astro.build/en/guides/integrations-guide/sitemap/) installed
