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.
This monorepo contains the following packages, more information on each package can be found by following the relevant link to the package README.
A client side content management system framework to allow CRUD workflow for GitHub persisted Markdown documentation. Learn more.
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
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
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)
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.
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
An instance of the Airview API based on Express.js wired up to airview-cms-api package for demo/local debug. Learn more
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.
- Start by checking out main at https://github.com/AirWalk-Digital/airview
- Once cloned,
cd
into the root of theairview
project directory and runnpm install
to install all package dependencies
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
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.
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.
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.
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
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