Skip to content

touchlesscode/exo

01c2d0a292
Switch branches/tags
Code

Latest commit

 

Git stats

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, in less code. EXOs can be layered, related, transformed and embedded by other EXOs.

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.
  3. A bottomless, high-performance ReactJS web shell 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
    • TextKit SDK by Statflo
    • Algolia
    • Meilisearch
    • Soketi
    • Auth0
  • EXO Cloud - a free CDN and transformation service
  • Pre-alpha until Oct 15, 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.

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