A curated list of digital accessibility events.
The goal is for each page of this website to meet the requirements of WCAG 2.2 Level AA. If you notice a problem, please report it or email help@eventua11y.com. See the full accessibility statement on the website.
See the contributing guide for ways to get involved in this project, including some that don't require you to write a single line of code.
- Astro -- the site framework, running in server-side rendering (SSR) mode
- Vue -- interactive components hydrated on the client
- TypeScript -- used throughout the project
- Web Awesome -- web component library providing the core UI elements
- Custom CSS with light and dark themes
- PostCSS with Autoprefixer and cssnano
- Sanity -- real-time content database for events and books, edited in Sanity Studio
- Netlify Edge Functions (Deno runtime) -- three API endpoints:
/api/get-events-- fetches events from Sanity with timezone-aware date processing/api/get-books-- fetches book club books from Sanity/api/get-user-info-- returns user timezone and geolocation data
- Day.js -- date formatting and timezone conversion
- Netlify -- hosting with automatic deploys from the
mainbranch. Feature branches are deployed to preview URLs. - Sentry -- error tracking and performance monitoring
- Playwright -- end-to-end and accessibility tests
- axe-core -- automated WCAG 2.2 AA scans on every page as a foundation, with Playwright assertions layered on top for accessible names, landmarks, heading hierarchy, and ARIA states that axe cannot catch
- Vitest -- unit tests
- ESLint -- linting with plugins for Astro, Vue, TypeScript, Playwright, and jsx-a11y
- Prettier -- code formatting
- Node.js (LTS version, see
.nvmrc) - Netlify CLI (included as a dev dependency)
The edge functions require the following environment variables, configured in Netlify:
| Variable | Description |
|---|---|
SANITY_PROJECT |
Sanity project ID |
SANITY_DATASET |
Sanity dataset name |
SANITY_API_VERSION |
Sanity API version |
SANITY_CDN |
Whether to use the Sanity CDN (true/false) |
SENTRY_AUTH_TOKEN |
Sentry auth token (used during build for source map uploads) |
npm installTo run the dev server with Prettier and ESLint watching for changes:
npm run devOr to run just the Astro dev server:
npm startTo run locally with Netlify Edge Functions, use the Netlify CLI:
npx netlify dev# End-to-end tests (Playwright)
npm test
# Unit tests (Vitest)
npm run test:unit
# Unit tests in watch mode
npm run test:unit:watchnpm run buildThis runs Prettier/ESLint checks, builds the Astro site, and uploads source maps to Sentry.
Pull requests trigger a GitHub Actions workflow that runs unit tests and end-to-end tests against Netlify deploy previews. An additional workflow checks for missing alt text on images.
Dependency updates are managed by Dependabot.
