Skip to content

touchlesscode/exo

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Exo

A blueprint for a more open, accessible, future-proof world.

🙉 What's EXO about?

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:

A graphic explaining how EXO makes a website up to 13X faster

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:

  1. A universal data schema, served over a free API
  2. A lightweight smart loader to enable those with autism to use the web without frustration + improve performance
  3. A bottomless, high-performance web shell, delivered through Cloudflare, which connects to headless systems and APIs

Goals

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.

Now:

Shell:

  • EXO for Gatsby + Gatsby Cloud + Sanity + Tailwind
  • Integrations:
    • Gatsby Head
    • Gatsby Script
    • Widget SDK
    • Algolia
    • Meilisearch
    • Soketi
    • Auth0
  • EXO Cloud - a free CDN and transformation service
  • Pre-alpha until December 31, 2022

EXO API:

  • Currently in closed beta.

Next:

  • EXO API - Documentation
  • EXO Cloud - A management UI
  • RFC on the Touchless Schema spec for Person, Accomodation
  • RFC for Entity, Relationship, Location, Identity
  • EXO for SolidJS
  • EXO theme for Remix
  • EXO theme for NextJS
  • EXO theme for Svelte

Examples

How to Run

This project uses Nx to manage the repo. You'll need a Touchless API key for most operations.

Adding capabilities to the workspace

Nx supports many plugins. Ones we use:

  • React
    • npm install --save-dev @nrwl/react
  • NestJS - preferred for services
    • npm install --save-dev @nrwl/nest
  • Web (no framework frontends)
    • npm install --save-dev @nrwl/web

There are also many community plugins. We intend to contribute to the NX ecosysem over time.

Generate an application

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.

Generate a library

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.

Default Development server

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.

Code scaffolding

Run nx g @nrwl/react:component my-component --project=gatsby to generate a new component.

Build

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.

Running unit tests

Run nx test gatsby to execute the unit tests via Jest.

Run nx affected:test to execute the unit tests affected by a change.

Running end-to-end tests

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.

Understand your workspace

Run nx graph to see a diagram of the dependencies of your projects.

To Deploy:

nvm use 16
yarn install
yarn run build

Storybook:

npx nx storybook shared-ui