Inspiration
I kept noticing the same failure mode everywhere: syllabi with due dates that get buried in a PDF nobody reopens, Slack reminders that ping into the void, and tasks people fully intend to do and then just... don't. The thing that actually works for most people isn't a better to-do list; it's someone else knowing whether you followed through. So I built the simplest possible version of that: paste what you need to do, pick a person who'll find out if you didn't, and back it with a Raspberry Pi that can make it physically obvious the moment you slip.
What it does
Tether takes your tasks from wherever they already live pasted syllabus text, a live Canvas course, or your Slack reminders and uses Gemini to turn them into structured commitments with real due dates. You pick an accountability partner, and they get a read-only link to watch your progress live. When you mark something done or missed, Gemini writes a short, honest one-line message and emails your partner automatically. A Raspberry Pi script polls your status in the background, ready to drive an LED the instant something's marked missed accountability. You could see across the room, not just in an inbox.
How I built it
Next.js (App Router) + TypeScript on the frontend and API routes, Postgres hosted on Tiger Data (Timescale Cloud) for storage, Google Gemini for both task extraction and writing the partner notifications, and Resend for email delivery. Canvas and Slack integrations pull real assignments/reminders server-side through personal access tokens, mapped into the same task schema as pasted text. No login system owner and partner tokens (via nanoid) act as lightweight, shareable auth. The whole thing is deployed on a Vultr Cloud Compute instance running Ubuntu, behind nginx with a Let's Encrypt certificate, on a custom domain from GoDaddy Registry/Porkbun. The Raspberry Pi side is a small Python script that polls a status endpoint and drives a GPIO pin, with a print-only fallback mode so the logic is fully testable without hardware attached.
Challenges I ran into
Canvas's own API turned out to be locked down at the institutional level. The University of Houston disables personal access token generation for students, so I built a demo-safe fallback path alongside the real integration so the feature is still fully demonstrable. I also hit a subtle timezone bug where due dates parsed as UTC were displaying a day early in the dashboard, and I had to dig into a Vultr/cloud-init default that was silently overriding my SSH hardening.
Accomplishments that I'm proud of
Going from an idea to a fully deployed, custom-domain, HTTPS-secured app with three working task sources (Paste, Canvas, and Slack), real email notifications, and a hardware integration tested end-to-end in software solo overnight.
What we learned
How much infrastructure work (DNS, TLS, deployment, SSH hardening) sits underneath what looks like "just an app," and that a locked-down institutional API is a real constraint worth designing around rather than blocking on.
What's Next for Tether
Real OAuth for Canvas and Slack instead of personal tokens, SMS/push notifications alongside email, letting a partner set reminders or nudges back to you instead of only watching passively, and getting the Raspberry Pi physically wired up with a real LED.
Built With
- canvas-lms-api
- godaddy
- google-gemini
- letsencrypt
- next.js
- nginx
- postgresql
- python
- resend
- slack-api
- tailwindcss
- tigerdata
- typescript
- vultr
Log in or sign up for Devpost to join the conversation.