Skip to content

MSAIL/MSAIL.github.io

Repository files navigation

MSAIL website

The site for the Michigan Student Artificial Intelligence Lab (MSAIL) at the University of Michigan, built as a fully static export for GitHub Pages at https://msail.github.io.

Stack

  • Next.js 16 (App Router) with output: "export"next build emits the whole site as static HTML into ./out. No server.
  • Tailwind CSS v4 — design tokens (colors, type scale, spacing) live in src/app/globals.css under @theme.
  • Typed content layer — all copy, links, rosters, talks, and resources live in src/data/ so future maintainers can edit content without touching React. Each migrated item carries a provenance Flag (verified / stale / unverified / awaiting) — see src/data/content-status.ts. Flag notes are internal; pages render the separate user-facing notice strings.
  • Fonts — Inter (body), Anton (display, single weight), IBM Plex Mono (labels) via next/font.

Develop

npm install
npm run dev      # dev server at http://localhost:3000

Build & preview

npm run build    # static export → ./out
npm run start    # serve ./out locally (what GitHub Pages will serve)

next start does not work with output: "export"; npm run start serves the static artifact instead.

Deploy

npm run deploy

That runs scripts/deploy.sh: local checks (types, lint, build) → push main → watch the GitHub Actions run → smoke-test the live site. It needs the gh CLI authenticated with push access to MSAIL/MSAIL.github.io.

Plain git push origin main deploys too — pushes to main build and publish ./out to GitHub Pages via .github/workflows/deploy.yml; the script just adds the pre-flight checks and post-deploy verification. For the root domain, the repo must live at MSAIL/MSAIL.github.io with Pages set to GitHub Actions (Settings → Pages → Build and deployment). There is no basePath; trailingSlash: true emits /about/index.html-style paths, and public/.nojekyll keeps Pages from mangling _next/ assets. The old Hugo site is archived on the master branch (tag hugo-site-final) — never delete either.

Checks

npx tsc --noEmit   # types
npm run lint       # eslint

About

DO NOT MODIFY: Autogenerated content, may be overwritten without warning.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors