Uptime monitoring for PT sites, driven by GitHub Actions and Astro.
| Workflow |
Schedule |
Action |
| monitor.yml |
Every 15 min |
HTTP probes all sites, writes results to data/uptime/ |
| build.yml |
Every 2 hours |
Builds Astro static site, deploys to GitHub Pages |
| update-source.yml |
Every day |
Fetches site definitions from PT-depiler, runs data cleanup |
Site definitions are pulled from pt-plugins/PT-depiler (src/packages/site/definitions/**/*.ts). The siteMetadata variable in each file provides:
- id — unique site identifier
- name — display name
- urls — array of URLs to probe (ROT13-encoded URLs with uggcf:// / uggc:// prefix are auto-decoded)
- type — site category
- descriptions — optional description
- isDead — optional flag to skip monitoring (default: false)
- Skip sites with isDead: true
- For each site, test each URL with a 15s timeout; stop early if any URL succeeds
- If a URL fails, retry up to 3 times (2s delay between attempts)
- Site is UP if any URL responds; DOWN only if all URLs fail
- Concurrency limited to 5 sites at a time via p-queue
- Results saved to data/uptime/YYYY/MM/DD/HH_MM.json
- Daily: merges all per-run files in data/uptime/YYYY/MM/DD/ into data/uptime/YYYY/MM/DD.json (JSONLines), removes raw files
- Monthly: merges daily files into data/uptime/YYYY/MM.json
- Skips today's data and current month's data (monitoring in progress)
- Generates data/uptime.json index of all merged files
pnpm install
# Fetch site definitions
pnpm update-source
# Run a monitoring check
pnpm monitor
# Start Astro dev server
pnpm dev
| Command |
Description |
| pnpm dev |
Start Astro dev server |
| pnpm build |
Build static site to dist/ |
| pnpm monitor |
Run uptime checks |
| pnpm update-source |
Fetch site definitions from PT-depiler |
| pnpm cleanup |
Merge data files + regenerate index |
/
├── .github/workflows/
│ ├── monitor.yml
│ ├── build.yml
│ └── update-source.yml
├── scripts/
│ ├── update-source.mjs
│ ├── monitor.mjs
│ └── cleanup.mjs
├── src/ # Astro pages & components
│ ├── pages/
│ │ ├── index.astro
│ │ └── site/[id].astro
│ ├── components/
│ │ ├── Layout.astro
│ │ ├── SiteCard.astro
│ │ ├── StatusBadge.astro
│ │ └── LatencyChart.astro
│ └── lib/
│ ├── data-loader.ts
│ └── types.ts
├── public/ # Static assets (favicon)
├── data/
│ ├── site.json # Site definitions
│ ├── uptime.json # Monitoring data index
│ └── uptime/ # Monitoring results
├── astro.config.mjs
├── package.json
└── tsconfig.json
- Enable GitHub Pages in repo settings → Source: GitHub Actions
- The build.yml workflow handles build + deploy automatically
- Set site and base in astro.config.mjs to match your domain / repo name
MIT