The bilingual COSCUP event website, built with Nuxt 4, Vue 3 and TypeScript for GitHub Pages. Pages, share images, calendar/RSS feeds and llms.txt with event Markdown are generated from one CSV.
Both language homepages also include automatically generated 1200×630 share images.
- Edit
event.csv, one event per row. See the CSV guide for fields and formatting. - Set
publish=truewhen ready; leave drafts asfalseor blank. - Merge into
main. GitHub Actions validates, builds and deploys the site. Failed checks leave the existing site intact.
To rebuild without editing, run Validate and deploy Pages in Actions on main. Development and production use the same published CSV rows.
Use Node.js 24 (.nvmrc).
npm ci
npm run devOpen localhost:3000/events/. CSV edits reload the server. For LAN access, use npm run dev -- --host 0.0.0.0.
npm run check:events
npm run typecheck
npm test
npm run generate
npm run previewStatic output: .output/public. Preview: localhost:4173/events/. Host and path settings are in .env.example.
For UI changes, install Chromium with npx playwright install chromium, then run npm run test:e2e after generating the site.
Source code is licensed under the MIT License.
The Code of Conduct is CC BY 4.0. About-page content and icons use MIT; fonts use SIL OFL. License notices are included. COSCUP retains rights to its logos.