GithubHelp home page GithubHelp logo

cstate / cstate Goto Github PK

View Code? Open in Web Editor NEW
2.4K 15.0 216.0 1.34 MB

🔥 Open source static (serverless) status page. Uses hyperfast Go & Hugo, minimal HTML/CSS/JS, customizable, outstanding browser support (IE8+), preloaded CMS, read-only API, badges & more.

Home Page: https://cstate.mnts.lt

License: MIT License

HTML 97.79% Dockerfile 0.95% Shell 1.25%
hugo netlify status statuspage fast light ie8 ie10 ie11 github-pages

cstate's Introduction

cState example illustration

Über fast to load and build, backwards compatible (IE8+), tiny, and simple OSS status page built with Hugo. Completely free with Netlify. Comes with Netlify CMS, read-only API, badges like from shields.io, and other useful features.

GitHub release GitHub Repo stars Awesome status page

VISIT THE CSTATE WEBSITE HERE

You can support the creator of this project by starring, sharing, using cState and/or financially supporting the author. Thank you!

Sponsors

You can sponsor cState by sponsoring the main developer of the project, @mistermantas.

Examples 🥳

Official

More examples from the internet

Want your status page here? Create a PR!

Contents 🔍

Features 😎

NEW: HTML Embed now in version 2. Check it out!

cState HTML embed lets you add a dot indicator or show an alert if your cState status page has active issues

Fast.

  • Fast to load. Even on Internet Explorer 8. Incredible browser support. Minimal JS. No CSS dependencies either.
  • Fast to create incidents. Use the command line or setup a CMS like Netlify CMS or Forestry for a no-code experience. See here
  • Stays fast. Hugo & Golang can build a site with thousands of entries in seconds.

Nice.

  • Focused, adaptable design. Auto dark mode. Easy customization from one file (or settings page). Statistical calculations show the key take-away (e.g., time spent fixing an issue).
  • Fit for any language. With built-in support for English, German, French, Italian, Lithuanian, Macedonian, Dutch, Portuguese, Turkish, and Tagalog. See here
  • All incidents, sorted. Link incidents to systems/categories, let users know how long previous downtime took, and more.

Free.

  • Free hosting. Host on supported platforms like Netlify or manage cState yourself. See here
  • Free your data. Use RSS or the read-only API to create custom HTML/JS integrations or simply embed the built-in badges/shields.
  • Free for developers to expand upon. Integrate monitoring, link to other systems, change any text or style, create custom pages, and more.

Please note that with all that cState can do, it cannot do automatic monitoring out of the box. See this thread You can think of the cState status page as an informational hub. Because the software is static, it cannot directly monitor any services in real time.

However, cState is a perfect option for recording incidents because most of the time your services are functioning, so the status page does not need to be updated. By default, the little bit of JavaScript on the page improves the user experience but is not required to see the most vital information.

There are other commercial options that may update faster because of their architecture, have built-in real-time uptime monitoring, send notifications by email or other means, but cState is not supposed to be better than paid solutions.

Getting started 💻

This is how you create a new site powered by cState. What you are generating is a Hugo site with specific, already existing modifications (to Hugo, cState acts like a theme).

IF YOU ARE A DEVELOPER / WANT TO CONTRIBUTE TO THE DEVELOPMENT, SCROLL TO THE BOTTOM. THIS IS FOR USERS.

Aside from hosting the repository itself on Git (usually on GitHub), your next options are:

  • Site deployment platform:
    • Cloudflare Pages (recommended for larger teams)
    • Netlify (recommended for most easy setup)
    • GitHub Pages
    • GitLab Pages
    • Vercel
    • render.com
    • host it yourself
  • Admin panels / CMS:
    • Forestry.io
    • Netlify CMS
    • Or just edit locally / use your Git provider's online editor (github.com, gitlab.com, etc)

You can also look at other headless CMS options (we use Git-based CMS types) on jamstack.org.

🧡 Cloudflare Pages (GitHub Pages, render.com, Vercel, Forestry...)

If you wish to use Netlify, use the button below for easier deployment.

All other static site generator platforms require you to follow this instruction:

  1. Clone the repository cstate/example - here is a link to do it on GitHub
  2. Go to pages.cloudflare.com and sign in
  3. Create a new site from Git, select your newly generated repository
  4. These are the settings you should be using:
  • Build command: hugo
  • Publish directory: public
  • Add one build environment variable
    • Key: HUGO_VERSION
    • Value: 0.101.0 (or later)

💚 Netlify and Netlify CMS

You don't have to use Netlify, but this is the best option if you need Netlify CMS which works best with Netlify. It takes just a few clicks to make it work, more info is in the documentation.

You can simply click this button to get started:

Deploy to Netlify

💜 GitLab Pages

Here is a good guide for getting started with the service.

In short: a .gitlab-ci.yml file is responsible for making cState work. As of v4.2.1, the cState automatically ships with this file, but support is still experimental. It may take up to 30 minutes before the site is available after the first deployment.

As of this time, this is a relatively untested option, but Hugo does seem to generate the right things (this can be checked by downloading the CI/CD artifacts).

You can make Netlify CMS work on GitLab, but that requires overriding an existing file in the theme. Create a file in static/admin/config.yml and follow the instructions linked earlier. (cState by default ships with Git Gateway for Netlify.)

Manual builds

For this tutorial, it is assumed that you have Hugo and Git installed (check with hugo version & git --version).

A minimum version of 0.80 is required for Hugo, starting with v5.

I want to use my site in production

Clone the example repository:

git clone --recursive -b master https://github.com/cstate/example.git

You must use --recursive so that Git downloads cState and you do not have an empty themes/cstate folder.

Now you can edit what's inside the folder (cd example) and try previewing that with this command:

hugo serve

Edit the config file. Once the changes you wanted done are finished, generate the final files like this:

hugo

And the folder public can now be hosted.

As you can imagine, manual building is a little bit tedious but a great option to have available programmatically.

Docker

cState comes with a Dockerfile and Netlify (according to their article from 2016) uses a similar Docker system to build cState. This is an option for people who prefer Docker and NGINX instead of serverless, but serverless still has the priority in cState development.

Read wiki

Updating 🎉

If you are updating from one major version to another, like from v3 to v4, then please read the migration guides.

Assuming the production install instructions were followed, keep cState updated by having an up to date Git submodule in the themes folder. containing this repository. Your content should stay separate from the guts of cState.

Ask yourself these questions:

  1. Do I already have the up to date Git repository with my status page on my computer?
  • If not, go to your desktop or somewhere else, where you can download your Git repository and run: git clone --recursive <your repo link goes here> && git submodule foreach git pull origin master.
  • In the parent directory, type hugo serve. Check to see if everything is working.
  • Then do git add -A; git commit -m "Update cState"; git push origin master; exit. Your status page is now updated.
  1. If you DO have the directory, go inside themes/cstate. If that is empty, it is easier to delete your local copy and do the steps outlined earlier.

There is currently no easier way to do this, unfortunately, you will need the terminal / command line / Git Bash, unless you want to create a new status page from scratch and move your data over manually.

More info about submodules: updating & cloning.

FAQ 🤔

What should be the first thing I do after downloading the example repository? What do I edit?

Most of the settings are in the config.yml file or under Settings, if you have set up Netlify CMS.

How do I create issues?

Using an admin panel (Netlify CMS)

This takes a little more effort to set up but pays off in the long run — see the wiki for up to date information.

Doing it from the Git repository

Create a file in content/issues. The name of the file will be the slug (what shows up in the URL bar). For example, this is what 2017-02-30-major-outage-east-us.md should look like:

---
title: Major outage in East US
date: 2017-02-30 14:30:00
resolved: true
resolvedWhen: 2017-02-30 16:00:00
severity: down
affected:
  - API
section: issue
---

*Monitoring* - After hitting the ole reboot button Example Chat App is now recovering. We’re going to continue to monitor as everyone reconnects. {{< track "2018-04-13 16:50:00" >}}

*Investigating* - We’re aware of users experiencing unavailable guilds and issues when attempting to connect. We're currently investigating. {{< track "2018-04-13 15:54:00" >}}

This is what you would see for an issue that has been resolved.

Time to break that down.

title: This is the one of the most important parts of an incident. (required)
date: An ISO-8601 formatted date. Does not include time zone. This is when you first discovered the issue. (required)
resolved: Whether issue should affect overall status. Either true or false. (boolean, required)
resolvedWhen: An ISO-8601 formatted date. Does not include time zone. This is when downtime stopped. You may set the time that downtime ended without completely resolving the issue (thus leaving time for monitoring).
severity: If an issue is not resolved, it will have an applied severity. There are 3 levels of severity: notice, disrupted, and down. If there are multiple issues, the status page will take the appearance of the more drastic issue (such as disrupted instead of notice). (required)
affected. Add the items that were present in the config file which should alter the status of each individual system (component). (array, required)
section. This must be issue, so that Hugo treats it as one. (required)

You don't have to define a date for resolvedWhen when the issue is not resolved (obviously):

---
title: Major outage in East US
date: 2017-02-30 14:30:00
resolved: false
severity: down
affected:
  - API
section: issue
---

We are looking into this...

Is that it?

For this very basic tutorial, yes.

I have more questions!

Check out the wiki.

Contribute 💥

Making a change in the code for the cstate/cstate repo

PRs should be submitted to the dev branch, if it exists. Before submitting a pull request, create an issue to discuss the implications of your proposal.

The root directory is where the theme itself is (the cState guts, basically) and the exampleSite folder houses all content for your specific site. Use this local setup to experiment before making a PR.

Here is a guide for how you should develop:

  1. Clone this repository in the command line:
git clone --recursive -b master https://github.com/cstate/cstate.git
  1. Launch the development setup like this:
# old command
# navigate to the directory where your content is and start dev server from there
cd cstate/exampleSite
hugo serve --baseUrl=http://localhost/ --theme=cstate --themesDir=../.. --verbose
# new command partially works for v5.0.2; does not load images from static/
# for this you need to be in the theme root
hugo serve --config=exampleSite/config.yml --theme=../ --contentDir=exampleSite/content

For translators

See this.

Code of conduct

Be kind.

License ✍

MIT © Mantas Vilčinskas

A special thanks to all the contributors!

Note about versions

We use semantic versioning. Version numbers are logged in the console (JS partial), the HTML — the meta[generator] tag (meta partial), and API index (index.json).

cstate's People

Contributors

avelino avatar bramb-1952444 avatar breucode avatar cactysman avatar drarig29 avatar dumbmoron avatar enrico204 avatar everpeace avatar gruselhaus avatar higherror avatar jacksonchen666 avatar jsoref avatar kaystrobach avatar kevinlang avatar khamer avatar krisfremen avatar mirmiz avatar mistermantas avatar nbarton915 avatar nevexo avatar pauby avatar pheraph avatar pmdlt avatar printf-ana avatar rophy avatar sarveshmrao avatar sunnykrgupta avatar supersandro2000 avatar tarikly avatar tobiasehlert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cstate's Issues

404 for specific /affected/

Show a better 404 message if a component has never been down

I think this just should be under /layouts/affected/404.html

Make RSS feed discoverable

Is your feature request related to a problem? Please describe.

I subscribe to the status page of services that I use or run myself via Atom (or RSS) feeds. Hugo generates an RSS feed for its categories, but if the feed is not made discoverable then readers will not know that it exists and can't use it.

Describe the solution you'd like

Add a link to the header that points to any alternative representations of the document (such as RSS):

<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="My status" />

Describe alternatives you've considered

This is the standard way to make alternative representations of the document discoverable, there is no alternative solution.

Patch

In accordance with the PR template I did not make a pull request yet, but you can see the entirety of the work required on this page: https://gohugo.io/templates/rss/
A patch which can be used if desired is here: 33876f8

https://github.com/SamWhited/cstate/blob/33876f816a803b7fca26de1cd85265aa604838bb/layouts/partials/meta.html#L12-L14

Support older browsers

All of my most despised browsers that this project must support… lack many features, such as:

  • border radius
  • rem unit support
  • CSS opacity
  • rgba()
  • :before/:after

So, goodbye what I used to call “basic features of a web browser.”

Pseudo elements will be hard to replace, but the upside is that they can be added with JS & innerHTML. Update: :before and :after are supported on IE8! (Not ::before or ::after, though, but they’re functionally the same.)

Media queries should be used for extending to desktops with normal browsers. Enjoy that mobile UI, IE8.

Error while rendering "home" in "": template: index.html:63:25: executing "index.html" at <$systems>: undefined variable: $index

commands:

git clone [email protected]:cstate/cstate.git
cd cstate/exampleSite
hugo serve --baseUrl=/ --themesDir=../..

backtrace:

ERROR 2018/08/30 14:51:27 port 1313 already in use, attempting to use an available port
Building sites … ERROR 2018/08/30 14:51:27 Error while rendering "home" in "": template: index.html:63:25: executing "index.html" at <$systems>: undefined variable: $index
Total in 7 ms
Error: Error building site: logged 1 error(s)

Default email template doesn’t have /admin (Netlify CMS)

Describe the bug
I cannot get access to the /admin page through Netlify

Reproduction steps
Steps to reproduce the behavior:

  1. Setup site in Netlify (set works well, I make a commit and it updates the site, I have setup a custom domain name, custom SSL and works well)
  2. Invite myself as a user
  3. Click on the 'Accept invite' link in the email.
  4. When I see the site it has a #invite_token in the URL
  5. I then go to site/admin and get the Login to Netlify button
  6. Click the button and I'm asked to provide a username and password. I enter my email address and a password (note the password I enter I'm assuming I'm setting as nowhere has given me a password or let me set one up to this point). I get the error 'Email not confirmed';
  7. If I click the 'Login to Netlify'; button again and click 'Recover password' and enter my email address I'm sent a link by email.
  8. If I click this link I geta url with #recovery_token after it but again nowehere to set an email.
  9. This just goes around and around. I cannot login. Tried two different browsers (Firefox and Chromium);

I also triued adding the Gitlab provider but it does the same (without the username and password box).

I tried to setup cState in Netlify about 6 months ago (version 2) and had EXACTLY the same issues and gave up.

I'm not sure where the issue lies. If it were a Netlify issue they'd have fixed it. If this was a cState issue, there would be issues raised about it. So is it me? Perhaps but I've been through this so many times that I'm lost as to what the issue actually is.

Expected behavior
I can log in.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser Chromium and Firefox
  • Version Chromium - 73.0.3683.75 (Official Build) (64-bit) and Firefox - 65.0.2 (64-bit)

Categories: hidden components

Subsystems are basically components housed within components. They are hidden under an expand icon, like [+], and can only change status by incident. Example

This may be difficult to implement in time for v2 but should be considered. The system for how incidents & components work at the moment is simple enough but would get complicated with subcomponents.

Invalid Discord Invite in README

Describe the bug
There's a badge to join the Discord support guild for this project in README.md.
However, the invite seems to be invalid.

Reproduction steps

  1. Open the README.md.
  2. Click the badge saying "Discord Support" under the header image.

Expected behavior
Invite should be valid and I should be able to join the Discord guild.

Screenshots
image

Desktop:

  • OS: Chrome OS Version 72.0.3626.122 (Official Build) (64-bit)
  • Browser: Chrome
  • Version: 72.0.3626.122

Extended components

In v2-dev1 components are just text in an array. This needs to be addressed.

Possible layout:

-
  name: Media Proxy
  description: This is the service responsible for serving images, audio, and video.
  partial: mediaproxy

Description shows [?] icon or [+] icon for more information. Should not be required.

Partial would be custom HTML (see: #7) below the component. This way, uptime metrics could be added with 3rd party JS:

image

If there are any other possible meta tags, please reply to this issue with suggestions.

Build requires ResolvedWhen to work - Failed to execute template “issues/small.html”

Describe the bug
Whe using Netlify I get an error building:

Full log from Netlify:

6:44:47 PM: Build ready to start
6:44:49 PM: build-image version: 324ec043422499a87b63cac1f1dabeefe6dca19d
6:44:49 PM: build-image tag: v3.0.2
6:44:49 PM: buildbot version: ef2e26260c41679f4cdeaebbf93370345c9fecf7
6:44:49 PM: Fetching cached dependencies
6:44:49 PM: Starting to download cache of 85.6MB
6:44:50 PM: Finished downloading cache in 655.03937ms
6:44:50 PM: Starting to extract cache
6:44:53 PM: Finished extracting cache in 2.79598009s
6:44:53 PM: Finished fetching cache in 3.489159982s
6:44:53 PM: Starting to prepare the repo for build
6:44:54 PM: Preparing Git Reference refs/heads/master
6:44:55 PM: Starting build script
6:44:55 PM: Installing dependencies
6:44:56 PM: Started restoring cached node version
6:44:58 PM: Finished restoring cached node version
6:44:59 PM: v10.15.3 is already installed.
6:45:00 PM: Now using node v10.15.3 (npm v6.4.1)
6:45:00 PM: Attempting ruby version 2.6.2, read from environment
6:45:02 PM: Using ruby version 2.6.2
6:45:02 PM: Using PHP version 5.6
6:45:02 PM: Installing Hugo 0.48
6:45:02 PM: Hugo Static Site Generator v0.48/extended linux/amd64 BuildDate: 2018-08-29T06:57:35Z
6:45:02 PM: Started restoring cached go cache
6:45:03 PM: Finished restoring cached go cache
6:45:03 PM: unset GOOS;
6:45:03 PM: unset GOARCH;
6:45:03 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.12.linux.amd64';
6:45:03 PM: export PATH="/opt/buildhome/.gimme/versions/go1.12.linux.amd64/bin:${PATH}";
6:45:03 PM: go version >&2;
6:45:03 PM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.12.linux.amd64.env';
6:45:03 PM: go version go1.12 linux/amd64
6:45:03 PM: Installing missing commands
6:45:03 PM: Verify run directory
6:45:03 PM: Executing user command: hugo
6:45:03 PM: Building sites …
6:45:03 PM: ERROR 2019/03/19 18:45:03 in .Render: Failed to execute template "issues/small.html": template: issues/small.html:69:25: executing "issues/small.html" at <$t.Unix>: can't evaluate field Unix in type *errors.errorString
6:45:03 PM: 
Total in 39 ms
6:45:03 PM: Error: Error building site: logged 1 error(s)
6:45:03 PM: Caching artifacts
6:45:03 PM: Started saving pip cache
6:45:03 PM: Finished saving pip cache
6:45:03 PM: Started saving emacs cask dependencies
6:45:03 PM: Finished saving emacs cask dependencies
6:45:03 PM: Started saving maven dependencies
6:45:03 PM: Finished saving maven dependencies
6:45:03 PM: Started saving boot dependencies
6:45:03 PM: Finished saving boot dependencies
6:45:03 PM: Started saving go dependencies
6:45:03 PM: failed during stage 'building site': Build script returned non-zero exit code: 255
6:45:03 PM: Finished saving go dependencies
6:45:03 PM: Error running command: Build script returned non-zero exit code: 255
6:45:03 PM: Failing build: Failed to build site
6:45:03 PM: Finished processing build request in 14.247298728s
6:45:03 PM: Shutting down logging, 0 messages pending

Error trying to run Hugo on the site locally:

Building sites … ERROR 2019/03/19 18:49:11 in .Render: Failed to execute template "issues/small.html": "C:\Users\Paul\git\pauby\mine\site-chocostatus\themes\cstate\layouts\issues\small.html:69:25": execute of template failed: template: issues/small.html:69:25: executing "issues/small.html" at <$t.Unix>: can't evaluate field Unix in type *errors.errorString
Total in 161 ms
Error: Error building site: logged 1 error(s)

When I pull the repo down locally and try to build with Hugo I get the same error there. I set the environmwent variable for Netlify to use Hugo 0.48 but I'm using 0.54 locally.

Reproduction steps
Steps to reproduce the behavior:

  1. Just apply a change to the site (in this case updating an open incident) and it will then build and get the error.

Expected behavior
It shouldn't error.

Add notifications

Should work with the notifications API present on desktop browsers like Chrome, Firefox, and Safari.

UI is added in latest edition.

Add visual settings via Netlify CMS

Problem: the file is overwritten to save changes, which isn’t great.

Small preview of what this looks like:

  - name: "settings"
    label: "Settings"
    description: "⚠ Please be warned that by editing settings from Netlify CMS you are _overwriting_ what you have in the original Git repository, meaning any comments left will be deleted."
    delete: false # Prevent users from deleting documents in this collection
    editor:
      preview: false
    files:
      - name: "general"
        label: "Configuration"
        file: "config.yml"
        fields:
          - label: 'This options affects the core of cState. It defines the theme directory. Do not change it if you do not know what you are doing.'
            name: 'theme'
            widget: 'hidden'
            default: 'cstate'
          - {label: "What is your status page called? — Shows up in the browser bar and meta tags", name: "title", widget: "string"}
          - {label: "Should posts, which have a publish date from the future, be built? Useful for sharing upcoming maintenance, etc.", name: "buildFuture", widget: "boolean", default: true, required: false}
          - label: 'What language should the site use?'
            name: 'languageCode'
            widget: 'select'
            default: 'en'
            options:
              - { label: 'English (Default)', value: 'en' }
              - { label: 'Lithuanian', value: 'lt' }
          - {label: "What is the hostname or path to the root? Where is the site hosted? Slash enables relative links.", name: "baseURL", widget: "string", default: "/"}
          - label: "Params"
            name: "params"
            widget: "object"
            fields:
              - label: "Footer links"
                name: "footer"
                widget: "list"
                fields:
                - {label: "Name", name: "name", widget: string}
                - {label: "URL", name: "url", widget: string}
          - label: "Taxonomies (values must be identical to label)"
            name: taxonomies
            widget: "object"
            required: false
            fields:
              - {label: "categories", name: "category", widget: "string", default: "categories"}
              - {label: "author", name: "author", widget: "string", default: "author"}
              - {label: "tags", name: "tag", widget: "string", default: "tags"}

feed is not valid

Describe the bug

Newer versions (currently in the staging branch) of cstate provide a feed, which is awesome! :) Sadly, there seem to be a few issues with this new feature:

  1. it does not validate
  2. https://reddit.statuspage.io is mentioned as an alternative URL. While this might be true for reddit, it does not seem like a sane default.

Reproduction steps
Steps to reproduce the behavior:

cd exampleSite
mkdir themes
ln -s ../.. themes/cstate
hugo
cat public/index.xml

Expected behavior

The feed should survive a basic XML validation. If the feed does not know its HTML version, default to not providing any alternative links, instead of reddit.

Desktop (please complete the following information):

  • OS: N/A
  • Browser: N/A
  • Version: v3 Beta 1, e21e127

Maintenance Status

You Could Add A "Down For Maintenance" Status; This could be used when the server has planned downtime for work

Netlify CMS still needs more work

Before a stable release, I think Netlify CMS needs some changes:

  • add docs
  • make interacting with issues easier
  • potential custom widgets?

Add different service severities in same issue

Within an issue, services can only have one status - notice, disrupted or down. I'd like to be able to have separate severities for different services - for example 'API' could be 'disrupted' but 'Web Services' could be 'down'.

I've checked through open and closed issues and can't see anything like this - but I could have missed it!

Add custom HTML support

Should be separated by layout. Need to add to:

  • meta (head tags)
  • below or above header, or overwrite it
  • component html
  • custom content below main summary
  • custom tabs below main summary
  • custom overwritten footer
  • something below the original footer

make index.html more extensible

Is your feature request related to a problem? Please describe.
The index.html currently contains all HTML needed to render the main page, showing the system status and so on. Some sections are split out into partials, like footer.html. Most of the code just resides directly in index.html, however.
This makes it hard to make changes to the structure of the page. For example, we'd like to only show systems, when there is a problem.

Describe the solution you'd like
Divide index.html into more partials, e.g.:

  • index/summary.html: big "All systems operational" banner
  • index/component.html: list of components
  • index/component_list.html: one individual component
  • ... and so on

This enables users to override individual components of the index page. Migrating those changes in smaller files onto newer versions of cstate is much easier than working with the big index.html.

Describe alternatives you've considered
Overriding the whole index.html. This seems cumbersome to maintain as big the upstream file changes.

What do you think? :)

Removing auto-refresh

It doesn’t seem to be doing anything — twice I saw it just tick past the 5 minute mark while the window was open — so it’s just an extra unhelpful gimmick.

Maybe the code needs to be fixed / edited?

Removing in v4.1 / v5 and probably not replacing it with anything else.

(Also this is more like Discussion wanted, not help necessarily.)

Add accountability, goals to uptime stats

So if you go under a certain percentage, you might be violating an SLA. This can be outlined in the config and then on the uptimes page.

For example: Downtime has reached 98.9% mark, you are eligible for a refund.

Uptime stats should also say if it’s “Good” based on industry averages.

Also show what goes down the most and when.

e: This is partially implemented in v4.1 -- more complex calculations are difficult to do server-side

Prevent PRs from nesting cState in cState

Saw this problem in #30:

Okay, so there's one fundamental problem with this PR and it's that you've put this same cstate repository in itself. I understand this may not have been an intentional change, but I think it's important you understand why I've made some of the changes that I did.

.gitmodules should never be in the root repo, likewise neither should the repo itself under exampleSite/themes. That's just uber confusing.

Create official Docker image

Is your feature request related to a problem? Please describe.
Docker solves the problem of easily deploying and updating a whole stack of web applications. Without an official Docker image, it's difficult to integrate cstate into an existing Docker software stack.

Describe the solution you'd like
I would like for you to provide an official Docker image, preferable one based on automated builds so you don't have to manually push a new image every time you make a change.

Describe alternatives you've considered
N/A

Additional context
N/A

Edit: Fixed URL.

Make read-only API

I’ve never made an API so this is gonna be a nice challenge.

Just a nice REST JSON API. Because of the nature of Hugo and static sites, it’s not really easy to change the state of the site dynamically, but it’s possible.

Doc - https://forestry.io/blog/build-a-json-api-with-hugo/

EDIT: I’ve tried fiddling around with this and had very little luck without hacks upon hacks.

If you want to help — this is the best issue to tackle, as it’s gonna go to the backlog until it’s fixed.

e: https://discourse.gohugo.io/t/is-it-possible-to-make-a-read-only-json-api-or-something-like-it-where-you-output-all-the-things-in-the-content-folder-possibly-other-json-based-upon-the-config-file/18610

issue affected list

Within an issue is declared which systems has been affected, it is not listed within the page and home which system the issue affected.
I think it's important to keep this public data even for historical

Appropriate location layouts/issues/issue.html:

<small class="date">
    {{ .Date.Format "January 02, 2006 at 3:04 PM" }}
</small>
{{ range .Params.Affected }}
    <kbd>{{ . }}</kbd>
{{ end }}

Add more information to filename on Netlify CMS

Is your feature request related to a problem? Please describe.

When using Netlify CMS to create new issues, the title of the markdown file created is the title of the post. However, if you have weekly maintenance posts and try to title multiple of them "Weekly Maintenance" or something similar, only the first gets saved.

Describe the solution you'd like

Add a date, this also has the benefit of making posts sort correctly in most systems. Eg. instead of creating weekly-maintenance.md we would create 2018-10-07-weekly-maintenance.md.

Describe alternatives you've considered

I also thought about suggesting things like the components affected or other metadata from the title, but this doesn't make files sort well and may still have the same problem. A date is more likely to make the file unique and easy to find later.

The version number in the footer is wrong for version 2.0.2.

Describe the bug
The version number in the footer is wrong (version 2.0.2 shows 2.0.1).

Reproduction steps
Steps to reproduce the behavior:

  1. Go to an up to date (2.0.2) cstate page.
  2. Scroll down to the footer.
  3. See error

Expected behavior
The correct version number would be displayed.

Screenshots
I don't think that's necessary. Take this instead:

<small class="copyright faded">Powered by <a href="https://github.com/cstate/cstate">cState v2.0.1</a></small>

Desktop (please complete the following information):
Does not apply

Smartphone (please complete the following information):
Does not apply

Additional context
Does not apply

Netlify error when viewing incident: layoutPostDateEnd.getYear is not a function

Describe the bug
When viewing an incident the following error is displayed in the right hand pane:

Error
There's been an error - please report it.

Details
TypeError: layoutPostDateEnd.getYear is not a function

I'm not sure at this stage what it affects but it says it's to be reported.

Reproduction steps
Steps to reproduce the behavior:

  1. Login in to the site on Netlify;
  2. View an existing (resolved in thsi case) incident

Expected behavior
No error to appear.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser Chromium
  • Version 73.0.3683.75

Incidents at the top of the page

Hey,

Is it possible to remove the 'Incidents' at the top of the page, so it only shows the product/service with the 'status' and then the incident history at the bottom?

Thanks,
Steve

Netlify - Creating a new issue does not change component systems

Describe the bug
When you create a new issue with Netlify it does not add a resolved: field for an unresolved issue. As a result the affects systems / components never get marked as such on the page.

If I manually edit the incident and add a resolved: false field to the metadata it adds the severity to the components as you'd expect.

Reproduction steps
Steps to reproduce the behavior:

  1. Click New Incident in browser in Netlify
  2. Accept all of the defaults for the issue except you need add affected components and add a severity
  3. Click Publish now
  4. The incident appears on the page but the affected systems are shown as operational.

Expected behavior
The affected components to have the status provided.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.