React + Vite frontend for the ZeroPM Global Chemical Inventory. The app renders the public landing page, FAQ, and data download flows, and builds SQL queries used to fetch CSV exports from the ZeroPM Datasette instance.
- Landing page with accordion content and FAQ
- CSV downloads by country/region with query-driven filters
- Config-driven UI content (countries, regions, accordion items)
- React 18 + TypeScript + Vite
- MUI (Material UI) + Emotion
- Sass/SCSS styling
This project uses nvm. Ensure you're on the version from .nvmrc before installing dependencies.
nvm use
npm install
npm run devThe dev server runs on port 8080 by default.
npm run dev— start Vite dev server on port 8080npm run build— typecheck and build production assetsnpm run preview— preview the production build on port 8080npm run lint— run ESLintnpm run format— format the codebase with Prettier
The dev server proxies /zeropm to the ZeroPM Datasette host. Update the proxy in vite.config.ts if you need a different backend.
src/components— UI components (header, footer, accordions, content blocks)src/components/Content/configs— content configs (countries, regions, copy)src/hooks— query builder hooksrc/styles— theme and shared SCSS variablessrc/assets— static assets used by the app
MIT. See LICENSE.