{"id":31842606,"url":"https://github.com/aldotestino/ping-status","last_synced_at":"2026-07-22T03:32:31.491Z","repository":{"id":317166974,"uuid":"1064188499","full_name":"aldotestino/ping-status","owner":"aldotestino","description":"A monitoring service that pings configured endpoints and tracks their status over time.","archived":false,"fork":false,"pushed_at":"2025-11-04T14:00:22.000Z","size":326,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"standalone","last_synced_at":"2025-11-04T15:21:28.052Z","etag":null,"topics":["alarm-system","bun","effect","hono","latency","orpc","status-page","tanstack-query","tanstack-router","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aldotestino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-25T17:06:11.000Z","updated_at":"2025-11-04T14:00:26.000Z","dependencies_parsed_at":"2025-09-29T10:23:16.142Z","dependency_job_id":"11322417-5d0d-44c4-805a-e4ada82febb6","html_url":"https://github.com/aldotestino/ping-status","commit_stats":null,"previous_names":["aldotestino/ping-status"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/aldotestino/ping-status","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldotestino%2Fping-status","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldotestino%2Fping-status/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldotestino%2Fping-status/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldotestino%2Fping-status/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aldotestino","download_url":"https://codeload.github.com/aldotestino/ping-status/tar.gz/refs/heads/standalone","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldotestino%2Fping-status/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35745564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-22T02:00:06.236Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["alarm-system","bun","effect","hono","latency","orpc","status-page","tanstack-query","tanstack-router","typescript"],"created_at":"2025-10-12T06:28:19.232Z","updated_at":"2026-07-22T03:32:31.485Z","avatar_url":"https://github.com/aldotestino.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ping-status\n\nA monitoring service that pings configured endpoints and tracks their status over time.\n\n## Features\n\n- Monitor multiple endpoints with configurable intervals\n- Track response times and status codes\n- Automatic incident detection and notification\n- SQLite database for persistence\n- Web dashboard for viewing monitor status and history\n- API for accessing monitoring data\n\n## Technology Stack\n\n- **Runtime**: [Bun](https://bun.com) - Fast all-in-one JavaScript runtime\n- **Process Manager**: PM2 - Production process manager with load balancing\n- **Database**: SQLite (via bun:sqlite)\n- **ORM**: Drizzle ORM\n- **API**: Hono + oRPC\n- **Frontend**: React + TanStack Query + TanStack Router\n\n## Standalone Setup\n\nThis branch (`standalone`) provides a single-container deployment that runs both the web app and pinger service.\n\n### Prerequisites\n\n- Docker and Docker Compose\n- Bun (for local development)\n\n### Environment Variables\n\nThe pinger service uses Effect's internal cron scheduler, so `MONITOR_INTERVAL_MINUTES` is required in both local development and Docker/production environments.\n\nCreate a `.env` file in the root directory for **local development**:\n\n```env\n# Monitor configuration\nMONITOR_INTERVAL_MINUTES=1  # Interval in minutes between ping cycles (1-120)\nMONITOR_CONCURRENCY=5       # Number of monitors to ping concurrently (1-10)\nPORT=3000                   # API server port (default: 3000)\nDATABASE_PATH=../../ping-status.db  # Path to SQLite database file\n\n# Optional: Slack notifications\nSLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL\n```\n\n**Note**: In Docker, `MONITOR_INTERVAL_MINUTES` defaults to 1 minute (set in `docker-compose.yml`). The pinger runs as a long-running process that schedules itself internally using Effect's cron scheduler.\n\n### Running with Docker\n\nBuild and run the standalone container:\n\n```bash\ndocker-compose up --build standalone\n```\n\nThe service will be available at `http://localhost:8080`\n\nThe container automatically:\n- Runs database migrations on startup\n- Manages both API and pinger services with PM2\n- Restarts services automatically on crashes\n- Maintains logs in `/app/logs/` directory\n\n#### Accessing Logs\n\nView PM2 process status:\n\n```bash\ndocker exec -it \u003ccontainer-name\u003e pm2 status\n```\n\nView logs:\n\n```bash\ndocker exec -it \u003ccontainer-name\u003e pm2 logs\n```\n\nView specific service logs:\n\n```bash\ndocker exec -it \u003ccontainer-name\u003e pm2 logs app\ndocker exec -it \u003ccontainer-name\u003e pm2 logs pinger\n```\n\n#### Configuring Pinger Schedule\n\nThe pinger uses Effect's internal cron scheduler. To modify the ping interval, set the `MONITOR_INTERVAL_MINUTES` environment variable:\n\n- In `docker-compose.yml` for Docker deployments\n- In your `.env` file for local development\n\nThe pinger runs as a long-running process that schedules itself internally. Supported values: 1-120 minutes.\n\n### Local Development\n\nInstall dependencies:\n\n```bash\nbun install\n```\n\nGenerate database migrations (after schema changes):\n\n```bash\nbun run db:generate\n```\n\nRun database migrations:\n\n```bash\nbun run db:migrate\n```\n\n**Note**: In Docker, migrations run automatically on container startup.\n\nRun the pinger service (in one terminal):\n\n```bash\nbun run pinger\n```\n\nRun the API server (in another terminal):\n\n```bash\nbun run api\n```\n\nRun the web development server (in another terminal):\n\n```bash\nbun run web\n```\n\n### Database\n\nThe application uses SQLite for data persistence. The database file location depends on the environment:\n\n- **Local Development**: `ping-status.db` in the project root (or path specified by `DATABASE_PATH`)\n- **Docker**: `/app/data/ping-status.db` (mounted from `./data` directory)\n\nTo view/edit the database directly:\n\n```bash\nbun run db:studio\n```\n\n## Project Structure\n\n- `apps/api` - API server (Hono + oRPC)\n- `apps/web` - Web frontend (React)\n- `apps/pinger` - Monitoring service\n- `packages/db` - Database schema and client\n- `packages/config` - Environment variable validation and monitor configuration\n- `packages/monitor` - Monitor configuration types\n- `infra/` - Docker configuration\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldotestino%2Fping-status","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faldotestino%2Fping-status","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldotestino%2Fping-status/lists"}