Skip to content

LegendEffects/Statusify

Folders and files

NameName
Last commit message
Last commit date
May 7, 2021
Apr 2, 2021
May 24, 2021
May 7, 2021
May 7, 2021
May 7, 2021
May 7, 2021
May 7, 2021
May 11, 2021
May 7, 2021
Jan 9, 2021
May 24, 2021
Apr 2, 2021
May 24, 2021

Repository files navigation


A library connecting status platforms into a single glorious integration

TODO: Insert Badges


Status of This Project

This branch of the project is currently under construction, production usage isn't recommended but possible with some work. Contributions are welcome.

Here for a Status Page?

If you're here for a status page then you'll want to look at our React Frontend

Structure

This project uses a Monorepo structure managed with LernaJS

Package Description
core Core Connection Library
loki Loki Incident Provider
next Deprecated NextJS Frontend
react React Frontend
uptimerobot UptimeRobot Metric Providers

Features

  • Platform Agnostic Structure
  • Incident Reporting
  • Component Grouping
  • Support for Downtime, Latency, and Custom Metrics
  • Support for Custom Attributes

Installation

$ yarn bootstrap
$ yarn build

Then follow individual package documentation.

Contributing

Read through our contributing guidelines to learn about the contribution process and style guides.

Configuration

Configuration is currently mainly supported through a builder pattern; however, this is not enforced.

const builder = new Builder()
    .groups([
        group()
            .name('Group 1')
            .description('Group 1 Description')
            .components([
                component('component-1')
                    .name('Component 1')
                    .description('Component 1 Description'),
                component('component-2')
                    .name('Component 2')
            ]),
        group()
            .name('Group 2')
            .components([
                component('component-3')
                    .name('Component 3')
                    .description('Test Component 3 Description'),
            ]),
    ])
    .severities([
        runnableSeverity('operational')
            .name('Operational')
            .runnable(async (component) => true),

        runnableSeverity('partial')
            .name('Partial')
            .runnable(async (component) => false),

        runnableSeverity('minor')
            .name('Minor')
            .runnable(async (component) => false),
        
        runnableSeverity('major')
            .name('Major')
            .runnable(async (component) => false),
    ])
;

export const statusify = new Statusify({
  componentProvider: builder,
  severityProvider: builder,
  incidentProvider: new ArrayIncidentProvider(),
  severityCalculator: new AchievedSeverityCalculator(),
});