Official website for the Asian Cultural Union at NYU, NYU's largest Asian umbrella organization.
- Framework: Astro 6 (static site generator with React islands)
- Styling: Tailwind CSS v4 + SCSS theme
- Animation: Framer Motion
- Deploy: GitHub Pages (auto-deploys on merge to
master)
nvm install 22 && nvm use 22 # Node 22+ required
npm install
npm run dev # http://localhost:4321| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run preview |
Preview production build |
npm run check |
Astro type checking |
npm run lint |
ESLint |
npm run format |
Prettier (run before commit) |
All member/event data lives in src/data/. Photos go in src/assets/images/. Filenames are case-sensitive on Linux CI — match exactly.
Add an entry to the appropriate section in src/data/teamData.ts:
{
name: 'Full Name',
role: 'Role or empty string',
photo: 'e-board/filename.jpg', // → src/assets/images/e-board/
description: 'Bio shown on hover.',
linkedinUrl: 'https://linkedin.com/in/...',
}- Remove their entry from
src/data/teamData.ts - Add to the correct year in
src/data/alumniData.ts— note alumni have nodescriptionfield:
{
name: 'Full Name',
photo: 'e-board/filename.jpg', // photo can stay in e-board/
role: 'Role they held',
linkedinUrl: 'https://linkedin.com/in/...',
}If the graduation year doesn't exist yet, add a new { year: 'Class of XXXX', members: [] } block at the top of the array.
Edit src/data/teamData.ts. The section field (e.g. 'Presidents', 'Events') controls the heading shown on the Team page. Move member objects between sections as needed — section order in the array is the display order.
Add to src/data/events.ts. Place the image in src/assets/images/events/:
{ year: 2026, term: 'Spring', title: 'Event Name', image: 'events/filename.png', description: '...' }- Branch off
masterwith a descriptive branch name - Make changes and run
npm run buildto confirm no build errors - Open a pull request — merging to
mastertriggers automatic deployment
An AGENTS.md file at the repo root provides detailed architecture context for Claude Code, Codex, and similar tools. If you're using an AI assistant to make changes, point it at that file first — it covers the component model, styling layers, deployment pipeline, and caveats to avoid.
