Works on WoA is a public-facing compatibility catalog for Windows on Arm — it lets users discover and verify whether apps and games run natively (or via emulation) on Arm-powered Windows devices. The site tracks over 5,000 verified applications, organized by publisher and category, with community-driven status reports, search/filter capabilities, and internationalization support (English, Japanese, Korean, Chinese).
- Node.js (v18+ recommended)
- npm (ships with Node.js)
# 1. Clone the repository
git clone <repo-url>
cd works-on-woa
# 2. Install dependencies
npm install
# 3. Start the development server (runs on http://localhost:3000)
npm run devThe dev server supports hot module replacement — edits to source files will reflect immediately in the browser.
| Command | Description |
|---|---|
npm run build |
Type-check with TypeScript then produce a production build in dist/ |
npm run preview |
Serve the production build locally for verification |
npm run lint |
Run ESLint across the project |
npm run format |
Auto-format all files with Prettier |
npm test |
Run the Vitest test suite |
npm run test:watch |
Run tests in watch mode |
npm run migrate |
Run the Markdown-to-JSON data migration script |
The project is a React 19 SPA built with Vite and styled with Tailwind CSS v4. Key architectural decisions:
- Routing —
react-router-domv7 with lazy-loaded page components for code splitting (Home, Apps, Games, Publishers, FAQ, Learn, Custom Report, etc.). - State & Data Fetching —
@tanstack/react-queryfor async server state;zustandfor lightweight client state. A pluggableDataProviderinterface (src/data/provider.ts) abstracts data access — the defaultLocalDataProviderreads from a bundledprojects.jsonfile, but can be swapped for an API-backed provider. - Internationalization —
i18next+react-i18nextwith browser language detection. Translation files live undersrc/locales/(en, ja, ko, zh).
src/
├── App.tsx # Root component — providers & router
├── router.tsx # Route definitions (lazy-loaded pages)
├── components/ # Reusable UI components (Common, Home, Layout, Projects, Publishers)
├── data/ # Data layer — provider interface, local/API providers, types, content (projects.json)
│ └── hooks/ # React Query hooks for data access
├── lib/ # i18n setup, PDF/bulk-report generation
├── locales/ # Translation JSON files (en, ja, ko, zh)
├── pages/ # Page-level components (one per route)
└── utils/ # Formatting, filtering, and helper utilities
Details on the schemas used in application, game, and user report files can be found at https://www.worksonwoa.com/en/contributing.
If you have any questions about updating or building this website, please contact Linaro IT Support at it-support@linaro.org.