EXO, the empathy-first framework for an accessible world.
A blueprint for a more open, accessible, future-proof world.
EXO is a new type of scaffolding that transforms existing sites to be 5-30X faster and more accessible, with less code. EXOs can be layered on top of, related to, transformed by or embedded by other EXOs. An EXO can be loaded on top of most websites or platforms without code changes.
An example of EXO (top) transforming an existing site (below) using EXO CDN. Shorter is better:
Achieving the above would translate into a 2-3X increase in conversions. EXOs aim to enforce WCAG 2.1 AA, achieve PageSpeed scores on Mobile of >90 and 100 on Desktop consistently in production. Those who use EXO are trusted to create good with it.
It's comprised of a few key pieces:
EXO is a collaboration of folks who care about making the world usable for people with autism. It turns out when we do that, the business metrics improve too. We're excited to have Gatsby, Rudderstack, Sanity and others involved in us building a true enterprise-grade, scalable and open-source framework we continually will improve.
Shell:
EXO API:
This project uses Nx to manage the repo. You'll need a Touchless API key for most operations.
Nx supports many plugins. Ones we use:
npm install --save-dev @nrwl/react
npm install --save-dev @nrwl/nest
npm install --save-dev @nrwl/web
There are also many community plugins. We intend to contribute to the NX ecosysem over time.
Run nx g @nrwl/react:app my-app-name
to generate an application.
When using Nx, you can create multiple applications and libraries in the same workspace.
Run nx g @nrwl/react:lib my-lib
to generate a library.
You can also use any of the plugins above to generate libraries as well.
Libraries are shareable across libraries and applications. They can be imported from @exo/mylib
.
Run nx serve gatsby
for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
Run nx g @nrwl/react:component my-component --project=gatsby
to generate a new component.
Run nx build gatsby
to build the project. The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
Run nx test gatsby
to execute the unit tests via Jest.
Run nx affected:test
to execute the unit tests affected by a change.
Run nx e2e gatsby
to execute the end-to-end tests via Cypress.
Run nx affected:e2e
to execute the end-to-end tests affected by a change.
Run nx graph
to see a diagram of the dependencies of your projects.
nvm use 16
yarn install
yarn run build
npx nx storybook shared-ui