https://github.com/marcus/vibes
https://github.com/marcus/vibes
Last synced: 18 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/marcus/vibes
- Owner: marcus
- License: mit
- Created: 2026-06-06T20:11:18.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-15T23:01:46.000Z (about 1 month ago)
- Last Synced: 2026-06-16T01:08:32.682Z (about 1 month ago)
- Language: Swift
- Size: 22.7 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Vibes
A small macOS app for private, ambient presence among friends who are building things together.
Vibes 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.
## Status
Fully 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.
## Project Shape
- `client/`: native SwiftUI macOS app project.
- `server/`: SvelteKit relay (API + web signup) backed by SQLite.
- `deploy/`: nginx and systemd templates for a relay host.
- `scripts/`: local and server deployment helpers.
- `docs/plans/active/spec-v2.md`: product and implementation plan.
## Requirements
- macOS with Xcode 26 or newer.
- Node.js 20, 22, or 24 for the relay. Node 26 is not supported by the current SQLite native dependency.
- GitHub CLI for repo administration.
- SSH access to a VPS-style host for deployment.
## Quick Start
```bash
git clone git@github.com:marcus/vibes.git
cd vibes
make check
```
Open the macOS app:
```bash
open client/Vibes.xcodeproj
```
Run the relay locally (dev server with hot reload):
```bash
cd server && npm install
cd .. && make server-dev
curl http://127.0.0.1:5173/healthz
```
Build the macOS app from the command line:
```bash
make client
```
## Relay
The relay is intentionally small. Set `DEPLOY_DOMAIN`, `DEPLOY_HOST`, and related values in `.env.deploy` before deploying to a server.
For v1 it should store user identity, friend invites, friend relationships, and latest status blobs. SQLite is the expected database for the first implementation.
## Client
The client is a SwiftUI macOS app. The first build target is a small mostly chromeless desktop window with:
- manual status
- online / offline presence, with a one-tap Offline toggle
- configured local Git repo scanner
- aggregate daily stats
- friend feed from the relay
- optional menu bar companion
## Development
Useful commands:
```bash
make check # run server tests + build the macOS target
make client # build the macOS target
make server-dev # run the relay dev server (hot reload)
make server # build and run the production relay
make server-check # run the relay test suite
make deploy # deploy the relay to the configured VPS
```
Read [AGENTS.md](AGENTS.md) before starting implementation work. It captures repo conventions, privacy constraints, and suggested first tasks.
## Deployment
The deploy scaffold expects a VPS-style host:
- nginx terminates TLS.
- systemd runs Node on `SERVICE_HOST:SERVICE_PORT`.
- app files live under `DEPLOY_PATH`.
- certbot manages certificates for `DEPLOY_DOMAIN`.
See [docs/server-runbook.md](docs/server-runbook.md) for bootstrap and deploy details.
## Releases
The 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.
## License
MIT. See [LICENSE](LICENSE).