Static one-page website for BeerJS Moscow drinkups.
Production is built with Vite and TypeScript. There is no Express runtime and no Airtable request during production build. Airtable is only the upstream source for manually exported CSV data.
npm install
npm run generate:data
npm run devnpm run test
npm run build
npm run previewnpm run build runs npm run generate:data first, then checks TypeScript and builds dist.
- Export CSV from Airtable with the current schema.
- Replace
data/drinkups-base.csv. - Run
npm run generate:data. - Check
docs/data-report.md. - Run
npm run test. - Run
npm run build.
The generated files live in src/generated/:
drinkups.jsonfor the list and filters.venues.jsonfor the Leaflet map.data-report.jsonfor summary metadata.
Records without coordinates stay visible in the drinkup list, but are excluded from the map.
Missing coordinates and empty addresses are reported in docs/data-report.md.
- Main logo:
public/logo-beerjs-moscow.png. - Favicon:
public/favicon.svg. - Reference design:
docs/reference/beerjs_moscow_website_design.jpg. - CSV source:
data/drinkups-base.csv.
The site is published from the contents of dist to the gh-pages branch.
npm run build
npm run deploy:gh-pagesThe deploy script creates a temporary detached worktree for origin/gh-pages, preserves the
existing CNAME, copies dist, shows the diff, and creates a commit. It does not push unless
explicitly requested:
npm run deploy:gh-pages -- --pushDo not force-push gh-pages and do not delete CNAME; it is required for beerjs.moscow.