Skip to content
This repository has been archived by the owner on Oct 5, 2022. It is now read-only.

nearform/orion

Repository files navigation

Logo

CircleCI lerna

Orion is a bespoke CMS development kit, offering developers packages and capabilities that accelerate the process in developing content-driven solutions.

Tech Stack

Bundlers and Package Managers

Languages and Frameworks

Datastore and Languages

Linting

Testing

CI and Deployment

Logging and Debugging

Installation

The project is structured as a monorepo and uses Yarn and Yarn workspaces for dependency management.

For initial setup use yarn install.

To install the project's package dependencies use yarn run bootstrap.

To clean the project's package dependencies use yarn run clean.

Environment variables

This project uses .env files for environment variables.

To get the environment variable setup for local development you will need

  • .env.development files need to added to gatsby-plugin-orion-view and gatsby-plugin-orion-edit.
  • A .env file needs to added to the hasura package.

The content of the files can be found on clipperz.is

Quick Start

To get started quickly, check out these useful links:

Repo structure

The application is stored in a lerna monorepo.

Adding a new package

When making a new package we want to make sure that gatsby doesn’t do its own linting with eslint but rather uses the root level config from XO. Do do this you need an empty eslintrc.js file.

// We use xo configured in the root of the monorepo. Disable eslint for gatsby.
module.exports = {}

Some packages are marked as Legacy Package. This marking indicates that they have been brought over from a previous client-based project as part of transitioning that project into the Orion Accelerator and that those packages are potentially subject to significant change, rename, and/or deletion as the Orion project further develops.

CircleCI project continuous integration configuration.

Storybook project configuration

Legacy Directory

Documentation related to the client-project from which Orion originated. Does contain some useful docs related to technologies used.

Legacy Package

End-to-end tests using TestCafe. Requires environment variables to run, see the Quick Start Guide. For more details see the Tests docs.

Legacy Package

  • lambda serverless functions used to interact with AWS Cognito and Hasura

Contains all styling (CSS) and unique-client assets (such as logo images) for the Orion demo project Acme.

Core components shared by all Orion packages, such as user login and registration.

All components and functionality related to the creation and management of page, article, and other content for Orion projects.

All components and functionality related to the viewing of page, article, and other content for Orion projects.

Legacy Package

The application follows a serverless application model, where the only API used by the frontend is exposed through GraphQL via Hasura.

This folder contains the migrations and scripts necessary to run them.

A single script designed to overcome a GatsbyJS bug that can sometimes cause CircleCi builds to fail due to out-of-memory errors

Terraform AWS configuration

Dynamicly generate static files

This project is setup to responde to changes to data by rebuilding the static content. This process has 3 moving parts.

Hasura events are setup to listen to changes in all orion_page tables. These events call the content-generator-hook lambda. The lambda starts a generate-view-content workflow on circleCI which ultimately runs gatsby build and uploads it to the s3 bucket to be served.