The project is built using Astro.js and Tailwind CSS. Here's a quick look at the project structure:
Astro looks for .astro or .md files in the src/pages/ directory. Each page is exposed as a route based on its file name.
There's nothing special about src/components/, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the public/ directory.
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run astro ... |
Run CLI commands like astro add, astro check |
npm run astro -- --help |
Get help using the Astro CLI |
npm run format |
Format your code with Prettier |
npm run lint |
Lint your code with ESLint |
The site is deployed to GitHub Pages when a GitHub release is published. Releases are managed by Release Please, which reads commit messages on main, so they must follow Conventional Commits.
- Merge changes to
mainusing a commit message (for squash merges, the PR title) with a prefix such asfeat: ...orfix: .... - Release Please then opens a
chore(main): release x.y.zPR. - Merge that PR. This publishes the release, which triggers the deploy workflow.
Commits that are not releasable (for example chore:, deps:, or messages with no prefix like Content update) do not produce a release PR, so they will not be deployed on their own. Use fix: or feat: for any change that should go live.