SyncToDo
A shared schedule and to-do board where several people see changes live, with an MCP server so an AI assistant can use it too.
Go
Gin
WebSocket
Next.js
PostgreSQL
MCP
The problem
Planning a day with someone else usually means a chat thread and a calendar that disagree. I wanted one board both people edit, where a change shows up on the other screen straight away.
How it works
- A Go backend with a WebSocket hub: each client joins a schedule, and every change is broadcast to the others on it.
- A Next.js frontend. Schedule times are kept in UTC and shown in the browser's time zone, so people in different zones see the same slot.
- Sharing is permission-based, and people sign in with Google and are invited by email.
- A separate Go MCP server lets an AI client read and change a person's schedule on their behalf, using that person's own login.
- Dev and prod run in separate namespaces. The project has 30+ written decision records.
A decision: Start with an in-memory store behind an interface, move to Postgres later
The first version kept everything in memory so the data model was cheap to change. Handlers only called typed store methods, so SQLite and then Postgres could be swapped in without touching them.
What was hard
Daylight saving time. The hour that repeats when clocks go back makes wall-clock times ambiguous, so it has its own decision record and tests.