Skip to content

Simple yet powerful Status page. Beautiful to the eye and elegant to setup

License

Notifications You must be signed in to change notification settings

Daniele122898/StatusPage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Status Page

Simple yet powerful status page that allows you to show and configure different services all in one beautiful and material page


Simple from the ground up

Status Page was built from the ground up to be extremly easy to use but also to host. It does not require a database or any additional services. It runs off a single entities.json config file for the statuses and the appsettings.json file for general service settings.

Configure the appsettings.json file

There are a couple values that have to be set in the appsettings.json file.

First rename the appsettings.Example.json to appsettings.json. Make sure to set a Username and password which are used to login to the admin dashboard.

Generate a random token to be used for the jwt generation and add it to the appsettings.json file as well.

The token issuer should be the URL to your API. If you use the API to host the website like in this repo just use http://localhost:5000/.

Login for Admin Dashboard.

To get to the admin dashboard you have to go to the homepage and hit SHIFT+L on your keyboard. That will redirect you to /login. If you're on mobile just navigate to /login manually.

Angular Frontend build

The angular frontend is setup in a way such that triggering a ng build --prod will automatically deposit the build files into ../StatusPageAPI/StatusPageAPI/wwwroot which is the directory from which the API will serve the static files. You'll have to change the code slightly if you wish to decouple this functionality.

Configure Services to work with Status Page

All you need is to add a health endpoint to whatever service you wish to integrate with the Status Page. That endpoit must respond with a json object with the following properties:

"identifier": "My Service",
"status": 0

Identifier should be unique because otherwise you cannot distinguish between services.

Status is an enum with these values:

0 - Healthy
1 - Outage
2 - Partial Outage

The json object can have also have these informations optionally:

"description": "Description of the service if you don't want to set it in the frontend or json file",

"error": "Here you could pass an error that should be displayed on the frontend. Keep in mind that this error is visible by all users thus you shoulnd't add stacktraces here" 

Configurable from the web

If you don't want to you'll never have to touch or create an entities.json file. You can configure all the services from the beautiful dashboard right within the website.

Define a special notice

If you want to let your customers know that you're working on a particular outage you can set a special notice that will be displayed on the frontpage.

Special notice Special notice shown

Manage existing service configurations

You can easily manage your current service configurations in the same dashboard. Give them a fitting description. You can also define them as categories like the "Sora" service in the screenshots above.

Special notice shown

Create new service configurations

You can also add new service configurations from the dashboard that will then be checked for their status.

Special notice shown