{"id":51285875,"url":"https://github.com/marcus/vibes","last_synced_at":"2026-06-30T05:32:32.234Z","repository":{"id":362985166,"uuid":"1261528088","full_name":"marcus/vibes","owner":"marcus","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-15T23:01:46.000Z","size":23798,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T01:08:32.682Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-06T20:11:18.000Z","updated_at":"2026-06-15T23:01:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/marcus/vibes","commit_stats":null,"previous_names":["marcus/vibes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marcus/vibes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus%2Fvibes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus%2Fvibes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus%2Fvibes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus%2Fvibes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcus","download_url":"https://codeload.github.com/marcus/vibes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcus%2Fvibes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34954283,"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-06-30T02:00:05.919Z","response_time":92,"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":[],"created_at":"2026-06-30T05:32:31.723Z","updated_at":"2026-06-30T05:32:32.217Z","avatar_url":"https://github.com/marcus.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vibes\n\nA small macOS app for private, ambient presence among friends who are building things together.\n\nVibes shows which friends are online and coding, plus coarse daily stats from local Git repositories. The app is designed for small friend groups, privacy-respecting defaults, and a lightweight native desktop experience.\n\n## Status\n\nFully functional implementation. The repository includes a SwiftUI macOS client with local Git scanning and presence status derivation, a SvelteKit relay backed by SQLite with schema migrations, an invite-based friend flow, contract schema testing, and deployment playbooks.\n\n## Project Shape\n\n- `client/`: native SwiftUI macOS app project.\n- `server/`: SvelteKit relay (API + web signup) backed by SQLite.\n- `deploy/`: nginx and systemd templates for a relay host.\n- `scripts/`: local and server deployment helpers.\n- `docs/plans/active/spec-v2.md`: product and implementation plan.\n\n## Requirements\n\n- macOS with Xcode 26 or newer.\n- Node.js 20, 22, or 24 for the relay. Node 26 is not supported by the current SQLite native dependency.\n- GitHub CLI for repo administration.\n- SSH access to a VPS-style host for deployment.\n\n## Quick Start\n\n```bash\ngit clone git@github.com:marcus/vibes.git\ncd vibes\nmake check\n```\n\nOpen the macOS app:\n\n```bash\nopen client/Vibes.xcodeproj\n```\n\nRun the relay locally (dev server with hot reload):\n\n```bash\ncd server \u0026\u0026 npm install\ncd .. \u0026\u0026 make server-dev\ncurl http://127.0.0.1:5173/healthz\n```\n\nBuild the macOS app from the command line:\n\n```bash\nmake client\n```\n\n## Relay\n\nThe relay is intentionally small. Set `DEPLOY_DOMAIN`, `DEPLOY_HOST`, and related values in `.env.deploy` before deploying to a server.\n\nFor v1 it should store user identity, friend invites, friend relationships, and latest status blobs. SQLite is the expected database for the first implementation.\n\n## Client\n\nThe client is a SwiftUI macOS app. The first build target is a small mostly chromeless desktop window with:\n\n- manual status\n- online / offline presence, with a one-tap Offline toggle\n- configured local Git repo scanner\n- aggregate daily stats\n- friend feed from the relay\n- optional menu bar companion\n\n## Development\n\nUseful commands:\n\n```bash\nmake check       # run server tests + build the macOS target\nmake client      # build the macOS target\nmake server-dev  # run the relay dev server (hot reload)\nmake server      # build and run the production relay\nmake server-check # run the relay test suite\nmake deploy      # deploy the relay to the configured VPS\n```\n\nRead [AGENTS.md](AGENTS.md) before starting implementation work. It captures repo conventions, privacy constraints, and suggested first tasks.\n\n## Deployment\n\nThe deploy scaffold expects a VPS-style host:\n\n- nginx terminates TLS.\n- systemd runs Node on `SERVICE_HOST:SERVICE_PORT`.\n- app files live under `DEPLOY_PATH`.\n- certbot manages certificates for `DEPLOY_DOMAIN`.\n\nSee [docs/server-runbook.md](docs/server-runbook.md) for bootstrap and deploy details.\n\n## Releases\n\nThe macOS client ships as a Developer ID–signed, notarized app with Sparkle auto-updates (planned). Release scripts live in `scripts/` (`release-mac.sh`, `generate-appcast.sh`, `setup-notary.sh`). See [docs/client-runbook.md](docs/client-runbook.md#signed-release--notarization) for the signing, notarization, and publishing flow.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcus%2Fvibes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcus%2Fvibes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcus%2Fvibes/lists"}