├── .npmrc ├── src ├── routes │ ├── +layout.ts │ ├── +layout.svelte │ └── +page.svelte ├── app.d.ts ├── lib │ ├── types │ │ ├── api.ts │ │ └── config.ts │ ├── components │ │ ├── Footer.svelte │ │ ├── Header.svelte │ │ ├── StatusGroup.svelte │ │ ├── OverallStatus.svelte │ │ ├── RefreshSettings.svelte │ │ ├── Status.svelte │ │ ├── Announcements.svelte │ │ └── Loader.svelte │ └── persistent_store.ts ├── app.html └── app.css ├── docs ├── demo-dark.png ├── demo-light.png └── example-nginx.conf ├── static ├── favicon.ico └── img │ └── logo.png ├── .prettierignore ├── .devcontainer ├── docker-compose.yml └── devcontainer.json ├── vite.config.ts ├── .gitignore ├── .github ├── dependabot.yml ├── changelog-configuration.json └── workflows │ ├── dependabot-auto-merge.yml │ └── release.yml ├── .prettierrc ├── svelte.config.js ├── tsconfig.json ├── NOTICE.md ├── eslint.config.js ├── package.json ├── README.md └── LICENSE /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | export const ssr = false 2 | -------------------------------------------------------------------------------- /docs/demo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BluemediaDev/fancy-gatus/HEAD/docs/demo-dark.png -------------------------------------------------------------------------------- /docs/demo-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BluemediaDev/fancy-gatus/HEAD/docs/demo-light.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BluemediaDev/fancy-gatus/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BluemediaDev/fancy-gatus/HEAD/static/img/logo.png -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | bun.lock 6 | bun.lockb 7 | -------------------------------------------------------------------------------- /.devcontainer/docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | app: 3 | image: mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm 4 | volumes: 5 | - ..:/fancy-gatus:cached 6 | command: sleep infinity 7 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite' 2 | import tailwindcss from '@tailwindcss/vite' 3 | import { defineConfig } from 'vite' 4 | 5 | export default defineConfig({ 6 | plugins: [tailwindcss(), sveltekit()], 7 | server: { 8 | host: '127.0.0.1', 9 | }, 10 | }) 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | .netlify 7 | .wrangler 8 | /.svelte-kit 9 | /build 10 | 11 | # OS 12 | .DS_Store 13 | Thumbs.db 14 | 15 | # Env 16 | .env 17 | .env.* 18 | !.env.example 19 | !.env.test 20 | 21 | # Vite 22 | vite.config.js.timestamp-* 23 | vite.config.ts.timestamp-* 24 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://svelte.dev/docs/kit/types#app.d.ts 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {} 14 | -------------------------------------------------------------------------------- /src/lib/types/api.ts: -------------------------------------------------------------------------------- 1 | export type Result = { 2 | status?: number 3 | hostname?: string 4 | duration: number 5 | conditionResults: { 6 | condition: string 7 | success: boolean 8 | }[] 9 | success: boolean 10 | timestamp: string 11 | } 12 | 13 | export type Status = { 14 | name: string 15 | group?: string 16 | key: string 17 | results: Result[] 18 | } 19 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Please see the documentation for all configuration options: 2 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 3 | 4 | version: 2 5 | updates: 6 | - package-ecosystem: 'npm' 7 | directory: '/' 8 | schedule: 9 | interval: 'weekly' 10 | labels: 11 | - 'dependencies' 12 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "semi": false, 4 | "singleQuote": true, 5 | "useTabs": false, 6 | "tabWidth": 2, 7 | "quoteProps": "consistent", 8 | "bracketSpacing": true, 9 | "arrowParens": "always", 10 | "printWidth": 100, 11 | "plugins": ["prettier-plugin-svelte"], 12 | "overrides": [ 13 | { 14 | "files": "*.svelte", 15 | "options": { 16 | "parser": "svelte" 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/lib/components/Footer.svelte: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
9 | {overallStatusText}
43 |16 | {props.status.name} 17 | {#if props.status.results[props.status.results.length - 1].hostname} 18 | | {props.status.results[props.status.results.length - 1].hostname} 19 | {/if} 20 |
21 | 22 |Service Problem
53 | {:else} 54 |Operational
55 | {/if} 56 |Announcements
33 |