Skip to content

Instantly share code, notes, and snippets.

@jackcrane
Last active February 14, 2026 04:27
Show Gist options
  • Select an option

  • Save jackcrane/ca760f5f66f25c41b94c5155793b9f5c to your computer and use it in GitHub Desktop.

Select an option

Save jackcrane/ca760f5f66f25c41b94c5155793b9f5c to your computer and use it in GitHub Desktop.
workspace:
id: default
name: Crane Digital Platforms
description: A status page for tracking services run by Crane Digital Platforms
defaults:
intervalSeconds: 60
expectedStatus: 200
maxLatencyMs: 3000
timeoutMs: 10000
historyLimit: 200000
failureLimit: 50
criticalOutageSeconds: 120
method: GET
headers: {}
notifications:
notifyOnOutage: true
notifyOnRecovery: true
notifyOnDegraded: false
degradedThresholdMs: 2500
services:
- id: portfolio
name: Portfolio
url: https://jackcrane.rocks
- id: fosdata
group: fosdata
name: fosdata docs
url: https://fosdata.pages.dev
- id: fosdata-package
group: fosdata
name: fosdata Bechdel package
url: https://fosdata.pages.dev/data/bechdel.rda
intervalSeconds: 600
- id: coolify-instance
name: Coolify Instance
url: https://admin.jackcrane.rocks/api/v1/health
expectedText: OK
group: Core Support Services
description:
The Coolify instance is a "mini-paas" that I deploy docker images
against, providing orchestration and a low-cost hosting for my own
projects. It is a single-node instance running several images. Databases
and storage are hosted on different VMs or providers, and more resource
intensive applications run on dedicated VMs or provisioned App Platform
instances.
- type: rabbitmq
id: rabbit-mq
name: RabbitMQ Instance
group: Core Support Services
connectionString: enc:rsa:v1:RgrQHoz92a/afQui7BBm8qum2Z/A2FaTVyxqKQoe47qr/O2+GtOir6WM7X85S24sRigGyhkZl+0tQeEMkUXgdNQodUNDsg9eb5Fs1BweFs742LFiIs2QDvfucOlkZJGuU9rJtwY47tX+uurcccgS2IcLO/WMIiSj8QU9HyWtJFWZivR0SN5OBMPL9Sn7Ujxdx0oY+t3zSLo8emAf/xjoaJbROredZcwHhAzU2Ab6kk+n+b7bOIMFwJ7ZG1Lj82wsr05dt3gnhREX3onwNFqfO9m9GoQOV/RsQkipSKIsH6AEn9oDQgAPnfE8KjV18yClFEKIgGEDmLODiOgJn9AYlQ==
description:
The RabbitMQ instance is a hosted instance of RabbitMQ, providing
stable queue buildup and scheduling. It allows resiliency between the
FeatureBench [server](/featurebench) and [worker](/featurebench-worker) as
well as [EventPilot](/eventpilot).
- type: redis
id: redis
name: Redis Instance
group: Core Support Services
description: The Redis Instance is a hosted key/value storage system that is
used to power *this status page* and under the hood by
[RabbitMQ](/rabbit-mq) instance which is used by [EventPilot](/eventpilot)
and FeatureBench (both the [server](/featurebench) and the
[worker](/featurebench-worker)). It shares a VM with my shared postgres,
mysql, and [RabbitMQ](/rabbit-mq) instances.
connectionString: enc:rsa:v1:BRlRewSu7y5FZkDng1h0QhecDz9NNhJXbzOBjQSwSl4c4jl5n9qTwDlu2mTUSVAyy5CMznLpvQ0GxXlpVzm6Zygty2oIlFHqGK8GsOsgT275THLGx/T3DQj3YxXow9AIP3gsrlXXe8jSMY/zw77A1jam+XWkTvDOQ28scrcRTV22OG3Ke+t1iudPSGR4L/Ppol89yTv8erLj0p5mbGlUHY1pYUyXReZ+y9DqHV/lurnbK4VT5anzNwHZfJolkmDUHoLie++YNDxCyeEcZafWYeKYhjZDCjOzvM75s9dvBl8aJp+75eiwO+HgIgGvvER1YGrTOhC5llYL23VVJJ4I3g==
outage:
- outageId: pdpraawjc
title: Credential error
comment: I rolled the db credentials and status monitor was not updated. DB never went down, but was rejecting heartbeats for a few minutes.
- outageId: cz8rfn1y4
author: Jack Crane
title: Credential roll
comment: I rolled the db credentials following the db experiencing odd behavior recently. Affected services were put on maintenance during this outage.
- id: eventpilot
group: EventPilot
name: EventPilot homepage
url: https://geteventpilot.com
- id: eventpilot-docs
group: EventPilot
name: EventPilot docs
url: https://docs.geteventpilot.com
- id: og-image
group: og-image
name: OG Image Generator (landing page)
url: https://og-image.xyz
- id: og-image-image
group: og-image
name: OG Image Generator (image endpoint)
url: https://og-image.xyz/og/statuspage/subtitle/og-image.xyz/https/menlo/candybar/black/data.png
- id: paddlefest-volunteer-registration
group: Paddlefest
name: Paddlefest Volunteer Registration
url: https://volunteer.ohioriverpaddlefest.org
- id: paddlefest-volunteer-admin
group: Paddlefest
name: Paddlefest Volunteer Admin
url: https://paddlefest-admin-simple.pages.dev/
- id: paddlefest-volunteer-admin-api
group: Paddlefest
name: Paddlefest Volunteer API
url: https://volunteer.jackcrane.rocks/admin/volunteers
outage:
- outageId: bgc9yyka5
title: SSL Error
comment:
The Paddlefest Volunteer API experienced an SSL error. My orchestrator
attempted to provision a SSL certificate for a wildcard domain, but
the wildcard domain was not fully configured. The SSL certificate was
provisioned, but was not valid. The heartbeat expects HTTPS with a
valid SSL certificate, so the heartbeats failed.
- id: rmp-x-courses
name: Rate my Professors x Courses@SLU
url: https://rmp-conn.jackcrane.workers.dev/api?name=D.%20Letscher
expectedText: VGVhY2hlci0zMjUwMjQ=
intervalSeconds: 180
description:
This is a simple API that wraps a DOM parser to extract instructor
ratings from Rate My Professors. It is consumed by a chrome extension that
plugs into Courses@SLU and displays professor ratings in the course
listings. The API is a Cloudflare Worker with no external dependencies.
The only potential source of an outage is a Rate My Professors outage or
markup change, or a Cloudflare outage.
- id: featurebench-worker
group: FeatureBench
name: FeatureBench Worker
description: >-
This is the autograder worker for FeatureBench. It is a box that runs a
Solidworks instance with a thin API layer providing HTTP and queue
consumption capabilities. Due to the architecture of this worker, frequent
short outages are expected, but resilience is built-in and all requests
sent while the worker is down are queued and retried at a best-effort
basis. The FeatureBench worker is designed around eventual consistency,
not realtime performance.
As long as the [queue](/rabbit-mq) is online, requests through the FeatureBench website or API will be eventually processed and rectified in the db. If the queue is offline, the API will attempt to use HTTP to run grader invocations, but will operate with worstened performance and may not be able to satisfy all requests. In the event of significant outage, there should be an automatic provisioning of & failover to a backup.
url: enc:rsa:v1:QeKmxQi/WVgY1IaQyPgWbKQ/vGfUhkawJnKbWmLDFkS5+Txv01AQsGR6soAp5reWxUTxVqdg22DNZjyf2XEi7kUNFyTDxZm19e9Xcb8m+clcGzBsBBL8B3CYKiEIjjhkTF94n0jh7mmR3610TTqEhAs1OPAoQgNbA4VlCsKeOmeOoa98hXuw3M+zYygfdF93iZv4Pfp9RkBuo/T05Qdh6bVtbs6VYZezpxGSAFH96NHs1MjY+Sa5hxf5xm5OIQlgnK+BgW2IIy3a2ba2vo0Q4bqjT3bIfckPDdU0AWX0M5osbzxgba0jXY43TlZ1zaMI/h2vTFT781OeWwLz7HTYgg==
outage:
- outageId: jnzk54v2z
title: Forced error state
comment:
We forced an error state on the FeatureBench worker by purposefully
expecting response text that would not be present. This was a test
outage and the worker did not go offline.
author: Jack Crane
- outageId: 3f1oz1m6z
comment:
"*Requestor outage* the statuspage requestor went offline, not the
service."
author: Jack Crane
title: Requestor outage
- id: featurebench
group: FeatureBench
name: FeatureBench
url: https://featurebench.com
- id: featurebench-db
group: FeatureBench
name: FeatureBench DB
type: postgres
connectionString: enc:rsa:v1:rTpQQrbMdsxnfZKEiVUCrVbJU6Dar7UeTqGaqDaTmSGDGSPh+fRMoH4WqP0ZyNmU4sPU1c7ZQpfEDilkkK2k4mVImaSwEZO1Z12EA1MxNmZzGVGA/D/Lb0B6dDy7oF0anFZ+3hCgPKMJmXpgtSdVyndGqBP8RPB713hA5AEDUvW6SrsjR2oI+fnGW1CJ4lONGMVvk+sd8h3dWTGoaEcm89UAQWtnKF/hO31fSgL0VDLewCKSjmcV3Y9AZMyCeZhqKopWg1tsPcwe3fM05pNlw1ji8fl02qcd6gvr2sqM8pCqZfIs2T/1qsQ8LerKY6wx63I0ScI74R9fk4IgoW/YBQ==
query: SELECT 1
maxLatencyMs: 2000
acceptance:
expectedRows: 1
minRows: 1
maxRows: 1
- id: coredesk
name: CoreDesk API
group: CoreDesk
url: https://open-project-5skum.ondigitalocean.app/api/auth/me
expectedStatus: 401
outage:
- outageId: snv5joawm
comment: "CoreDesk is suffering occasional segmentation faults, seemingly originating from Prisma. I am attempting to improve stability and prevent these faults, but they are intermittent."
title: Segmentation Faults
author: Jack Crane
- id: orw-api
name: ORW API
url: https://orw-api.jackcrane.rocks/weather
expectedText: weather
intervalSeconds: 600
outage:
- outageId: 4kswl6etg
comment: "*Requestor outage* the statuspage requestor queued too many heartbeat pings against the ORW weather API, resulting in getting rate limited by an upstream provider."
author: Jack Crane
title: Requestor outage
- id: jellyfin
name: Jellyfin server
url: https://stream.jackcrane.rocks
expectedStatus: 200
group: Core Support Services
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment