This repository contains the Astro-based website for the Virginia Tech Coordination at Scale Laboratory (CAS Lab).
Primary public URLs:
https://caslab-vt.github.io/https://caslab.ece.vt.edu/
The site is built as a static Astro project and deployed with GitHub Actions through GitHub Pages. The same deployed site can also be served from the university domain.
- Astro
- Tailwind CSS
- React
- Pagefind
Requirements:
- Node.js
>= 22.12.0
Install dependencies:
npm installStart the local development server:
npm run devBuild the production site:
npm run buildRun Astro checks:
npm run lintsrc/pages/- site routessrc/content/- structured lab contentsrc/assets/- images and local mediapublic/- static files copied directly to the build.github/workflows/deploy-pages.yml- GitHub Pages deployment workflow
Reference and scrape artifacts that are not part of the live site have been moved under archive/.
This repository is intended to be the special GitHub Pages organization site repository.
For the root GitHub Pages URL to work, the names must match exactly:
- GitHub organization/account:
caslab-vt - Repository name:
caslab-vt.github.io
That exact pairing produces:
- repository URL:
https://github.com/caslab-vt/caslab-vt.github.io - site URL:
https://caslab-vt.github.io/
If the repository name changes to anything else, GitHub Pages will no longer publish at the root URL and will instead use a project-style path.
- Commit local changes.
- Update the local
originremote if it still points to the old repository name. - Push to
main. - Enable GitHub Pages with
GitHub Actionsas the source. - Confirm the site is live at
https://caslab-vt.github.io/. - Configure the custom domain in GitHub Pages.
- Ask university IT to point
caslab.ece.vt.eduto GitHub Pages.
- Push changes to
main. - In GitHub, open
Settings -> Pages. - Under
Build and deployment, setSourcetoGitHub Actions. - Do not choose
Deploy from a branch. - Do not use Jekyll for this repository. This is an Astro site and must be published by the workflow in
.github/workflows/deploy-pages.yml. - After the push, open the
Actionstab and confirm that theDeploy to GitHub Pagesworkflow runs successfully. - Once the workflow finishes, confirm the site loads at
https://caslab-vt.github.io/.
Exact local commands:
git add .
git commit -m "Update CAS Lab website"
git push origin mainFor the university domain:
- In GitHub, open
Settings -> Pages. - Set the custom domain to
caslab.ece.vt.edu. - In
Settings -> Secrets and variables -> Actions -> Variables, add:
PAGES_SITE_URL = https://caslab.ece.vt.edu
- Ask the university IT team to create a DNS
CNAMErecord:
caslab.ece.vt.edu -> caslab-vt.github.io
- After DNS propagates, return to
Settings -> Pagesand verify GitHub can issue HTTPS for the custom domain.
If the university does not allow direct GitHub Pages DNS mapping, they may instead provide a reverse proxy.
This repository should use the following git remote:
git@github.com:caslab-vt/caslab-vt.github.io.git
If your local clone still points to the old repository name, update it with:
git remote set-url origin git@github.com:caslab-vt/caslab-vt.github.io.git
git remote -vExpected output:
origin git@github.com:caslab-vt/caslab-vt.github.io.git (fetch)
origin git@github.com:caslab-vt/caslab-vt.github.io.git (push)
At the time of this note, a common post-rename issue is that the local clone still points to:
git@github.com:caslab-vt/website-caslab.git
That should be updated before the next push.
- The local folder name does not need to match the GitHub repository name.
- The site is configured to work both at the GitHub Pages root URL and at the custom university domain.