The source code for astro.build, built with Astro.
The themes catalog is now powered by the Astro Developer Portal, where you can log in, submit and update your own themes. The themes catalog automatically updates every day with the latest data from the portal.
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.
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.
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"
.
Site performance is tracked using @astrojs/web-vitals
and Astro Studio.
There are two separate projects in Astro Studio to separate production and development/preview data:
astrobuild
astrobuild-preview-deploys
These are both part of the Astro
team in Studio.
If table schema changes need to be pushed, remember to push them to each of these Studio projects.