{"id":51401485,"url":"https://github.com/4msar/status","last_synced_at":"2026-07-04T07:02:50.175Z","repository":{"id":341774003,"uuid":"1171418583","full_name":"4msar/status","owner":"4msar","description":"Personal status page!","archived":false,"fork":false,"pushed_at":"2026-04-06T13:16:15.000Z","size":95,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T15:22:01.545Z","etag":null,"topics":["personal","presence","status"],"latest_commit_sha":null,"homepage":"https://status.msar.me/","language":"JavaScript","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/4msar.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":"2026-03-03T07:56:14.000Z","updated_at":"2026-04-06T13:16:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/4msar/status","commit_stats":null,"previous_names":["4msar/status"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/4msar/status","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4msar%2Fstatus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4msar%2Fstatus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4msar%2Fstatus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4msar%2Fstatus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4msar","download_url":"https://codeload.github.com/4msar/status/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4msar%2Fstatus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35112708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"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":["personal","presence","status"],"created_at":"2026-07-04T07:02:49.658Z","updated_at":"2026-07-04T07:02:50.158Z","avatar_url":"https://github.com/4msar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Status\n\nPersonal status page powered by **Cloudflare Workers** + **KV**.\n\nShows what you're currently doing – phone, working, sleeping, watching, etc. – with a large icon and text. Update it from your iPhone/Mac with a single HTTP call.\n\n---\n\n## Features\n\n- 🎨 Clean, dark-mode status page at your custom domain\n- 📡 REST API to update status from any device or automation\n- 🔑 Token-protected `POST /api/status` endpoint\n- ⚡ Served at the edge via Cloudflare Workers – no server needed\n\n---\n\n## Setup\n\n### 1. Install dependencies\n\n```bash\nnpm install\n```\n\n### 2. Create a KV namespace\n\n```bash\nnpx wrangler kv namespace create STATUS_KV\nnpx wrangler kv namespace create STATUS_KV --preview\n```\n\nCopy the `id` values into `wrangler.toml`.\n\n### 3. Set your secret auth token\n\n```bash\nnpx wrangler secret put AUTH_TOKEN\n# Enter a strong random string when prompted\n```\n\n### 4. Deploy\n\n```bash\nnpm run deploy\n```\n\nSet up a custom domain in the Cloudflare dashboard (e.g. `status.msar.me`).\n\n---\n\n## Usage\n\n### Update status from iPhone / Mac / cURL\n\n```bash\ncurl -X POST https://status.msar.me/api/status \\\n  -H \"Authorization: Bearer YOUR_AUTH_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"status\": \"coding\", \"message\": \"Building something cool\"}'\n```\n\n### Built-in status presets\n\n| Key          | Icon | Label              |\n| ------------ | ---- | ------------------ |\n| `phone`      | 📱   | On my phone        |\n| `working`    | 💻   | Working            |\n| `coding`     | 👨‍💻   | Writing code       |\n| `sleeping`   | 😴   | Sleeping           |\n| `watching`   | 🎬   | Watching something |\n| `praying`    | 🕌   | Praying            |\n| `gaming`     | 🎮   | Gaming             |\n| `eating`     | 🍽️   | Having a meal      |\n| `commuting`  | 🚗   | Commuting          |\n| `exercising` | 🏃   | Exercising         |\n| `reading`    | 📚   | Reading            |\n| `away`       | 🌙   | Away               |\n| `available`  | ✅   | Available          |\n\nYou can also pass custom `icon` and `label` fields to override any preset.\n\n### Get current status (JSON)\n\n```bash\ncurl https://status.msar.me/api/status\n```\n\n---\n\n## Automation ideas\n\n- **iOS Shortcut**: trigger on Focus mode change → POST to `/api/status`\n- **Mac**: use a shell script triggered by a Calendar event or Focus filter\n- **Sleep/Wake**: trigger `sleeping` / `available` on Mac sleep/wake via a launchd agent\n\n---\n\n## Development\n\n```bash\nnpm run dev   # local dev server with wrangler\nnpm test      # run vitest unit tests\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4msar%2Fstatus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4msar%2Fstatus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4msar%2Fstatus/lists"}