/astro.build

Astro code for astro.build

Primary LanguageMDX

The source code for astro.build, built with Astro.

Updating Themes

The themes catalog is based on the themes content collection. Optimized images should be saved to the collection's _images directory, ideally as format with a {image}.webp file at 800px wide and {image}@2x.webp at 1600px wide.

Theme data is updated weekly by a GitHub Action. This action mainly updates the star count in public GitHub repos (used for sorting), but may be updated in the future to update additional theme details.

TODO: A future PR will migrate to astro:assets for image optimization and get away from the manual image optimization shenanigans.

Updating the Showcase

The showcase doesn't depend on any data from GitHub or NPM. All showcase data is pulled from the content collection. Similar to themes, optimized images should be saved to the collection's _images directory, ideally as format with a {image}.webp file at 800px wide and {image}@2x.webp at 1600px wide.

A weekly GitHub workflow pulls URLs posted in a dedicated GitHub discussion and opens a PR to add data and screenshots for these sites to the repo. You can also run this script locally and commit the results manually:

pnpm update:showcase

TODO: A future PR will migrate to astro:assets for image optimization and get away from the manual image optimization shenanigans.

Updating Integrations

The integrations catalog also used a content collection to track known Astro integrations.

Integration data is updated weekly by a GitHub Action. This action searches NPM and updates existing integrations, adds newly published integrations, and removes deprecated packages. A JSON config file is used to allow for manual overrides of data published in NPM, most often this is used for adding icons and tweaking description text.

Blog Posts

The blog collection is setup to support MDX blog posts with all images being pulled from the collection's _images directory. Images should be a webp format of a reasonable width, something in the 800-1600px range is ideal.

Blog post cover and social images are set as frontmatter properties and should point reference the _images directory, ex: coverImage: "/src/content/blog/_images/post-1/cover.webp".