# davidkeefe.ca

> Personal site of David Keefe (lowvisiondave).

## For tools and agents

- **Canonical index:** [https://www.davidkeefe.ca/llms.txt](https://www.davidkeefe.ca/llms.txt)
- **Well-known mirror:** [https://www.davidkeefe.ca/.well-known/llms.txt](https://www.davidkeefe.ca/.well-known/llms.txt) (same body)
- **Sitemap:** [https://www.davidkeefe.ca/sitemap.xml](https://www.davidkeefe.ca/sitemap.xml) (HTML + Markdown URLs)

### Conventions

- **Any URL ending in `.md`** is served as `text/markdown` (MDX body, metadata stripped).
- **Same content with site navigation** uses the matching path **without** `.md` (HTML).
- **Discovery:** MDX-backed HTML pages set metadata `alternates.types['text/markdown']` so `<head>` includes a link to the matching `.md` URL.

## Markdown (`text/markdown`)

### Site pages (MDX)

- [About Me](https://www.davidkeefe.ca/about.md): Meet David Keefe — a visually impaired full-stack web developer, Senior Platform Architect at Vercel, punk rock enthusiast, and vinyl collector

### Blog posts (MDX)

- [Hello world](https://www.davidkeefe.ca/blog/hello-world.md): A new blog. A new hope.
- [One Year At Vercel](https://www.davidkeefe.ca/blog/one-year-at-vercel.md): Reflecting on my first year at Vercel.

## HTML (nav + footer)

- [Home](https://www.davidkeefe.ca/)
- [Blog index](https://www.davidkeefe.ca/blog)
- [Blog index](https://www.davidkeefe.ca/blog)
- [Contact](https://www.davidkeefe.ca/contact)
- [Music](https://www.davidkeefe.ca/music)
- [Privacy](https://www.davidkeefe.ca/privacy)

### MDX pages (HTML)

- [About Me](https://www.davidkeefe.ca/about)

### Blog posts (HTML)

- [Hello world](https://www.davidkeefe.ca/blog/hello-world)
- [One Year At Vercel](https://www.davidkeefe.ca/blog/one-year-at-vercel)
