{"id":13401064,"url":"https://github.com/cstate/cstate","last_synced_at":"2025-05-14T00:07:51.776Z","repository":{"id":37451090,"uuid":"88166830","full_name":"cstate/cstate","owner":"cstate","description":"🔥 Open source static (serverless) status page. Uses hyperfast Go \u0026 Hugo, minimal HTML/CSS/JS, customizable, outstanding browser support (IE8+), preloaded CMS, read-only API, badges \u0026 more.","archived":false,"fork":false,"pushed_at":"2025-03-06T17:57:04.000Z","size":1547,"stargazers_count":2694,"open_issues_count":5,"forks_count":239,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-12T01:08:34.974Z","etag":null,"topics":["dark-theme","downtime","gh-pages","github-pages","hacktoberfest","hugo","hyperfast-golang","ie11","netlify-cms","no-javascript","serverless","status","status-page","status-pages","statuspage","uptime-monitor","uptime-monitoring"],"latest_commit_sha":null,"homepage":"https://cstate.mnts.lt","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cstate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"mistermantas","custom":["https://www.paypal.me/mistermantas"]}},"created_at":"2017-04-13T13:18:59.000Z","updated_at":"2025-05-10T18:33:28.000Z","dependencies_parsed_at":"2023-02-09T20:15:58.151Z","dependency_job_id":"1f1448c4-7ffc-498b-8f19-999957f20a4e","html_url":"https://github.com/cstate/cstate","commit_stats":{"total_commits":392,"total_committers":71,"mean_commits":5.52112676056338,"dds":0.6224489795918368,"last_synced_commit":"6da1473c864f3aeb8c563a00ddf28e8fc33d54b3"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cstate%2Fcstate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cstate%2Fcstate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cstate%2Fcstate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cstate%2Fcstate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cstate","download_url":"https://codeload.github.com/cstate/cstate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043864,"owners_count":22005028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dark-theme","downtime","gh-pages","github-pages","hacktoberfest","hugo","hyperfast-golang","ie11","netlify-cms","no-javascript","serverless","status","status-page","status-pages","statuspage","uptime-monitor","uptime-monitoring"],"created_at":"2024-07-30T19:00:58.313Z","updated_at":"2025-05-14T00:07:51.761Z","avatar_url":"https://github.com/cstate.png","language":"HTML","readme":"\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"images/cstate-logo-bg.svg?sanitize=true\" width=\"500\" height=\"auto\" alt=\"cState example illustration\"\u003e\u003c/p\u003e\n\n\n\u003e Über fast to load and build, works with legacy browsers such as Internet Explorer, 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.\n\n\n\u003cp\u003e\n\u003ca href=\"https://github.com/cstate/cstate/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/cstate/cstate/all.svg?style=flat-square\" alt=\"GitHub release\" /\u003e\u003c/a\u003e\n\u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/cstate/cstate?label=Star%20Repo\u0026style=social\"\u003e\n\u003ca href=\"https://github.com/ivbeg/awesome-status-pages\"\u003e\u003cimg src=\"https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg\" alt=\"Awesome status page\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n**[VISIT THE CSTATE WEBSITE HERE](https://cstate.netlify.app)**\n\nYou can support the creator of this project by starring, sharing, using cState and/or [financially supporting the author](https://github.com/sponsors/mistermantas). Thank you!\n\n\n## Sponsors\n\n[You can sponsor cState by sponsoring the main developer of the project, @mistermantas](https://github.com/sponsors/mistermantas).\n\n## Examples 🥳\n\n### Official\n\n* [**Example site — cstate.mnts.lt**](https://cstate.mnts.lt)\n* [Source code of the example cState site](https://github.com/cstate/example)\n\n### More examples from the internet\n\n* [Chocolatey](https://status.chocolatey.org/)\n* [sr.ht](https://status.sr.ht/)\n* [Content Ignite](https://status.contentignite.com/)\n* [FSCI](https://status.fsci.in/)\n* [Testing Farm](https://status.testing-farm.io/)\n\n*Want your status page here? [Create a PR](https://github.com/cstate/cstate/edit/dev/README.md)!*\n\n## Contents 🔍\n\n+ [Sponsors](#sponsors)\n+ [Examples](#examples-)\n+ [Features](#features-)\n+ [Getting started](#getting-started-)\n+ [Updating](#updating-)\n+ [FAQ](#faq-)\n+ [Contribute](#contribute-)\n+ [License](#license-)\n\n\n## Features 😎\n\n**NEW:** [HTML Embed now in version 2. Check it out!](https://github.com/cstate/html-embed)\n\n\n\n\u003ca href=\"https://github.com/cstate/html-embed\"\u003e\u003cimg src=\"https://github.com/cstate/html-embed/raw/main/images/preview.svg?sanitize=true\" alt=\"cState HTML embed lets you add a dot indicator or show an alert if your cState status page has active issues\"\u003e\u003c/a\u003e\n\n\nFast.\n\n* Fast to load. Even on Internet Explorer 8. Incredible browser support. Minimal JS. No CSS dependencies either.\n* Fast to create incidents. Use the command line or setup a CMS like Netlify CMS or Forestry for a no-code experience. See here\n* Stays fast. Hugo \u0026 Golang can build a site with thousands of entries in seconds.\n\nNice.\n\n* 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).\n* Fit for any language. With built-in support for English, German, French, Italian, Lithuanian, Macedonian, Dutch, Portuguese, Turkish, and Tagalog. See here\n* All incidents, sorted. Link incidents to systems/categories, let users know how long previous downtime took, and more.\n\nFree.\n\n* Free hosting. Host on supported platforms like Netlify or manage cState yourself. See here\n* Free your data. Use RSS or the read-only API to create custom HTML/JS integrations or simply embed the built-in badges/shields.\n* Free for developers to expand upon. Integrate monitoring, link to other systems, change any text or style, create custom pages, and more.\n\n**Please note that with all that cState _can_ do, it cannot do automatic monitoring out of the box. [See this thread](https://github.com/cstate/cstate/issues/124)** 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.\n\nHowever, 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.\n\nThere 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.\n\n\n\n## Getting started 💻\n\nThis 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).\n\n**IF YOU ARE A DEVELOPER / WANT TO CONTRIBUTE TO THE DEVELOPMENT, SCROLL TO THE BOTTOM. THIS IS FOR USERS.**\n\nAside from hosting the repository itself on Git (usually on GitHub), your next options are:\n\n* **Site deployment platform:**\n    * Cloudflare Pages (recommended for larger teams)\n    * Netlify (recommended for most easy setup)\n    * GitHub Pages\n    * GitLab Pages\n    * Vercel\n    * render.com\n    * host it yourself\n* **Admin panels / CMS:**\n    * Forestry.io\n    * Netlify CMS\n    * Or just edit locally / use your Git provider's online editor (github.com, gitlab.com, etc)\n\nYou can also look at [other headless CMS options **(we use Git-based CMS types)** on jamstack.org](https://jamstack.org/headless-cms/).\n\n### 🧡 Cloudflare Pages (GitHub Pages, render.com, Vercel, Forestry...)\n\nIf you wish to use Netlify, use the button below for easier deployment.\n\nAll other static site generator platforms require you to follow this instruction:\n\n1. Clone the repository cstate/example - [here is a link to do it on GitHub](https://github.com/cstate/example/generate)\n2. Go to pages.cloudflare.com and sign in\n3. Create a new site from Git, select your newly generated repository\n4. These are the settings you should be using:\n\n+ Build command: **hugo**\n+ Publish directory: **public**\n+ Add one build environment variable\n  + Key: **HUGO_VERSION**\n  + Value: **0.101.0** (or later)\n\n### 💚 Netlify and Netlify CMS\n\nYou 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.\n\nYou can simply click this button to get started:\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/cstate/example)\n\n### 💜 GitLab Pages\n\nHere is a [good guide for getting started with the service.](https://docs.gitlab.com/ee/user/project/pages/#getting-started)\n\n**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](https://github.com/cstate/cstate/releases/tag/v4.2.1), but support is still experimental. It may take up to 30 minutes before the site is available after the first deployment.\n\nAs 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**).\n\nYou can [make Netlify CMS work on GitLab](https://www.netlifycms.org/docs/gitlab-backend/), 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.)\n\n### Manual builds\n\nFor this tutorial, it is assumed that you have Hugo and Git installed (check with `hugo version` \u0026 `git --version`).\n\n\u003e A minimum version of `0.80` is required for Hugo, starting with v5.\n\n#### I want to use my site in production\n\n[Clone the example repository](https://github.com/cstate/example):\n\n```bash\ngit clone --recursive -b master https://github.com/cstate/example.git\n```\n\nYou must use `--recursive` so that Git downloads cState and you do not have an empty `themes/cstate` folder.\n\nNow you can edit what's inside the folder (`cd example`) and try previewing that with this command:\n\n```bash\nhugo serve\n```\n\nEdit the config file. Once the changes you wanted done are finished, generate the final files like this:\n\n```\nhugo\n```\n\nAnd the folder `public` can now be hosted.\n\nAs you can imagine, manual building is a little bit tedious but a great option to have available programmatically.\n\n### Docker\n\ncState comes with a Dockerfile and Netlify ([according to their article from 2016](https://www.netlify.com/blog/2016/10/18/how-our-build-bots-build-sites/)) 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.\n\n[Read wiki](https://github.com/cstate/cstate/wiki/Docker)\n\n## Updating 🎉\n\n**If you are updating from one major version to another, like from v3 to v4, then please [read the migration guides](https://github.com/cstate/cstate/wiki/Usage#migration-guides).**\n\nAssuming 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.**\n\nAsk yourself these questions:\n\n1. Do I already have the **up to date** Git repository with my status page on my computer?\n  * If not, go to your desktop or somewhere else, where you can download your Git repository and run: `git clone --recursive \u003cyour repo link goes here\u003e \u0026\u0026 git submodule foreach git pull origin master`.\n  * In the parent directory, type `hugo serve`. Check to see if everything is working.\n  * Then do `git add -A; git commit -m \"Update cState\"; git push origin master; exit`. Your status page is now updated.\n2. 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.\n\nThere 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.\n\nMore info about submodules: [updating](https://stackoverflow.com/a/5828396) \u0026 [cloning](https://stackoverflow.com/questions/3796927/how-to-git-clone-including-submodules).\n\n## FAQ 🤔\n\n### What should be the first thing I do after downloading the example repository? What do I edit?\n\nMost of the settings are in the `config.yml` file or under _Settings_, if you have set up Netlify CMS.\n\n### How do I create issues?\n\n#### Using an admin panel (Netlify CMS)\n\nThis takes a little more effort to set up but pays off in the long run — [see the wiki](https://github.com/cstate/cstate/wiki) for up to date information.\n\n#### Doing it from the Git repository\n\nCreate 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:\n\n```md\n---\ntitle: Major outage in East US\ndate: 2017-02-30 14:30:00\nresolved: true\nresolvedWhen: 2017-02-30 16:00:00\nseverity: down\naffected:\n  - API\nsection: issue\n---\n\n*Monitoring* - After hitting the ole reboot button Example Chat App is now recovering. We’re going to continue to monitor as everyone reconnects. {{\u003c track \"2018-04-13 16:50:00\" \u003e}}\n\n*Investigating* - We’re aware of users experiencing unavailable guilds and issues when attempting to connect. We're currently investigating. {{\u003c track \"2018-04-13 15:54:00\" \u003e}}\n```\n\nThis is what you would see for an issue that has been resolved.\n\nTime to break that down.\n\n`title`: This is the one of the most important parts of an incident. *(required)*\n`date`: An ISO-8601 formatted date. Does not include time zone. This is when you first discovered the issue. *(required)*\n`resolved`: Whether issue should affect overall status. Either `true` or `false`. *(boolean, required)*\n`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).\n`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)*\n`affected`. Add the items that were present in the config file which should alter the status of each individual system (component). *(array, required)*\n`section`. This must be `issue`, so that Hugo treats it as one. *(required)*\n\nYou don't have to define a date for `resolvedWhen` when the issue is not resolved (obviously):\n\n```md\n---\ntitle: Major outage in East US\ndate: 2017-02-30 14:30:00\nresolved: false\nseverity: down\naffected:\n  - API\nsection: issue\n---\n\nWe are looking into this...\n```\n\n### Is that it?\n\nFor this very basic tutorial, yes.\n\n### I have more questions!\n\nCheck out [the wiki](https://github.com/cstate/cstate/wiki).\n\n## Contribute 💥\n\n### Making a change in the code for the cstate/cstate repo\n\nPRs 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](https://github.com/cstate/cstate/issues).\n\nThe 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.\n\nHere is a guide for how you should develop:\n\n1. Clone this repository in the command line:\n\n```bash\ngit clone --recursive -b master https://github.com/cstate/cstate.git\n```\n\n2. Launch the development setup like this:\n\n```bash\n# old command\n# navigate to the directory where your content is and start dev server from there\ncd cstate/exampleSite\nhugo server --theme=cstate --themesDir=../..\n# new command partially works for v5.0.2; does not load images from static/\n# for this you need to be in the theme root\nhugo server --config=exampleSite/config.yml --theme=../ --contentDir=exampleSite/content\n```\n\n\n### For translators\n\n[See this](https://github.com/cstate/cstate/wiki/Translations#add-your-translations).\n\n### Code of conduct\n\n[Be kind](/CODE_OF_CONDUCT.md).\n\n## License ✍\n\n[MIT](https://github.com/cstate/cstate/blob/master/LICENSE.md) © [Mantas Vilčinskas](https://vilcinskas.me)\n\nA special thanks to all [the contributors](https://github.com/cstate/cstate/graphs/contributors)!\n\n**Note about versions**\n\nWe 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).\n","funding_links":["https://github.com/sponsors/mistermantas","https://www.paypal.me/mistermantas"],"categories":["HTML","Software","hacktoberfest","Opensource","Apps","theme","Project"],"sub_categories":["Status / Uptime pages","Monitoring"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcstate%2Fcstate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcstate%2Fcstate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcstate%2Fcstate/lists"}