# www.sillylaird.ca
Static personal site: HTML + CSS + a little JS. No build step.
## Common maintenance
- `python3 tools/link_check.py` — internal link sanity check
- `python3 tools/html_audit.py` — quick a11y/markup audit
- `python3 tools/generate_sitemap.py` — rebuild `sitemap.xml`
- `python3 tools/translate_pages.py` — generate missing `*_zh.html`/`*_jp.html`
## Ops helpers
- `./tools/backup.sh` — tarball backup (defaults to `/tmp/www.sillylaird.ca-backups`, override with `BACKUP_DIR`)
- `./tools/uptime_check.sh` — curl-based uptime check (override target with `URL`)
Example cron entries:
```cron
# nightly backup at 03:15 UTC
15 3 * * * BACKUP_DIR=/var/backups/www.sillylaird.ca /path/to/tools/backup.sh
# hourly uptime check
0 * * * * URL=https://www.sillylaird.ca/ /path/to/tools/uptime_check.sh
```
## Notes
- `sitemap.xml` is generated by `tools/generate_sitemap.py`.
- Shared header/footer live in `partials/` and are injected by `assets/js/includes.js`.