/airview

Primary LanguageJavaScript

Airview

Airview is a client side CMS framework and UI library, its main purpose is to allow an engineer to build a client side React application that will allow a user to Read, Create Edit and Delete Markdown documentation in real-time from a GitHub repository.

Package overview

This monorepo contains the following packages, more information on each package can be found by following the relevant link to the package README.

Airview CMS

A client side content management system framework to allow CRUD workflow for GitHub persisted Markdown documentation. Learn more.

Airview UI

A collection of React UI components; these can be composed to build an interface to render an application, which allows a user to navigate between and view specific Markdown documents. Learn more

Airview Mock Server

A simplified mock instance of Airview CMS API, with seed data; this is intended for local development and testing of the airview-cms package. Learn more

Airview CMS API

An api service library which interacts with a git style api, such as github. Transforms data from the backend into structure which airview-cms understands. The library does not implement view/controller logic to allow it to be re-used agnostic to deployment (e.g. in Express.js, AWS lambda/api-gateway)

Learn more.

Airview Compliance UI

In addition to the above packages, two demo apps exist, these showcase the composition of the above packages within a working application. As before, more information on each demo can be found by following the relevant link to the demo README.

Airview Demo

A demonstration of the integration of airview-ui, airview-cms, airview-mock-server and airview-cms-api packages. The demo acts as a development environment and an ideal canvas to talk through features or issues, without having to hit a real GitHub repo or GitHub API. Learn more

Airview API Demo

An instance of the Airview API based on Express.js wired up to airview-cms-api package for demo/local debug. Learn more

Cloning the monorepo for local development

The monorepo uses npm workspaces. A requirement for the project is node.js LTS, currently greater that version 16.15.1 but less than version 17.0.0.

  1. Start by checking out main at https://github.com/AirWalk-Digital/airview
  2. Once cloned, cd into the root of the airview project directory and run npm install to install all package dependencies

Tooling

As part of the installation process, husky will be installed, this runs pre-commit hooks to:

  • Lint staged JavaScript using eslint. Note: this will alert for errors, but not auto fix - you are expected to resolve any flagged errors
  • Lint all staged files using Prettier, to format code to a consistent style, code will be automatically re-written with formatting rules

Contributing

Currently requirements around contributing are fairly loose; we do aim to ensure all pull requests are of a satisfactory quality, meet the requirements of a given task and don't introduce errors into the production codebase. We've yet to have any automated tasks run for a PR into main, nor do we have any tests; we are solely reliant on the due diligence of the contributor at this point in time.

Branching

Branch names should include the GitHub issue ticket number, as should all commits. When a pull request is merged into main, please ensure you delete the branch from remote.

Pull requests

Our main branch is protected; any pull request to main will require the review and approval from an authorised reviewer, before a merge can be made.

There is no specific format for pull request information, we would ask that you provide a brief description of the work and use closing keywords to automate the closure of the related ticket in GitHub issues.

Versioning releases

Packages are pushed to npm:

When a semver style version tag it pushed to the repository, the packages are built and pushed to npm under the corresponding version tag/package name - see https://www.npmjs.com/~airwalk-digital for current packages. Note, we rebuild & publish all packages, even if there are no changes, to ensure consistency in version numbers across the packages

Issues, bugs and feature requests

We currently track all issues using GitHub issues, you can view these issues at https://github.com/AirWalk-Digital/airview-issues. We currently have no specific format on how to write your issue, but ask that you try to be as descriptive as possible.

We use a Kanban board to track the progress of our issues, you can view the board at https://github.com/orgs/AirWalk-Digital/projects/1