Relay: Personal Task Command Center Synced with monday.com

Overview

Relay is a task monitoring and planning app I designed and built for myself. It pulls every task assigned to me in monday.com into one fast, focused list, lets me add my own notes beside them, and pushes every change back to monday automatically. It installs on desktop and phone, notifies me the moment a new task lands, and an AI assistant can audit and reschedule my workload for me.

The problem

I run production for a marketing agency on my own, so tasks come at me from several monday boards at once. monday is built for teams managing projects, not for one person deciding what to do next. I found myself juggling three things:

  • Tasks spread across multiple boards with no single "what's on today" view
  • Personal to-dos that didn't belong on a client board but still needed planning
  • No quick way to spot what was overdue, unscheduled, or stuck in progress

I wanted one place to plan my day that stayed in step with monday, so the team still saw accurate status without me updating two systems by hand.

What I built

A planner that sorts itself. The home screen groups everything into Today, Tomorrow and Next Week. Groups are worked out from each task's date every time the page loads, so tasks move between sections on their own as the days pass.

One list for everything. monday tasks and personal notes live side by side. An All Notes view filters by priority or open status, and drag and drop reordering works with both mouse and touch.

Two way monday sync. When someone assigns me a task, it shows up in Relay within seconds. When I change a date, status or priority in Relay, monday updates too. It works across multiple boards, each with its own column setup.

Instant notifications. New assignments trigger a push notification on my phone or desktop, even when the app is closed.

Daily plan in Slack. Every morning at 8:30, Relay posts a formatted plan for the day to Slack. I can also send it on demand.

Installable app. Relay installs to the home screen like a native app and still loads my last task list when I'm offline.

Connect buttons, not config files. monday and Slack connect through their own login screens. No pasting API tokens.

The hard parts

Two way sync sounds simple until both sides start talking at once. Most of the engineering went into making it trustworthy.

Stopping infinite loops. When Relay updates monday, monday fires a webhook back saying "something changed." Left alone, Relay would process its own change, write it again, and loop forever. I solved this by checking who made each change. Anything authored by Relay's own connection is ignored. Because this doesn't depend on timing, it holds up even when the webhook arrives before Relay has finished saving.

No duplicate tasks. Inbound changes come from two paths: instant webhooks, plus a once a minute check that catches anything a webhook missed. If both catch the same task at the same moment, it could be created twice. Each task is matched to its monday item at the database level, so the second arrival simply updates the first.

Deleted tasks that stay deleted. If I remove a task in Relay, the next sync shouldn't bring it back from monday. Deletes are kept as quiet markers, so the sync knows "seen it, removed on purpose" and skips it. On monday's side, the item is archived rather than destroyed, since it may belong to someone else's board.

Clear conflict rules. If a task is edited in both places, the most recent edit wins. I chose one rule applied everywhere over a mix of special cases, which would have quietly reverted changes.

Midnight edge cases. "Today" depends on where you are. Every date boundary, from planner grouping to the 8:30 Slack post, is calculated in my own timezone rather than the server's, so tasks don't land in the wrong section around midnight.

Security. Every incoming webhook is verified as genuinely coming from monday before anything is processed.

Design approach

I wanted Relay to feel like a control panel, not another colourful project tool. The look is black with a solid red header, square corners throughout, and two typefaces: Archivo for interface text and JetBrains Mono for data like dates and labels.

Priority and status are shown as solid colour blocks rather than coloured text, so the table can be scanned at a glance. Green only ever means "low" or "done" and never appears on a button, so colour always carries meaning.

On mobile, the table adapts instead of collapsing into cards. The date column drops, labels shorten to three letter codes (URG, HIG, INP, COM), and the drag handle stays, so the same list works on a phone in one hand. When installed, the phone's status bar takes on the red of the header.

I started from a static prototype, then rebuilt it as a proper component system with every button, pill and field as a reusable piece. That keeps the interface consistent as it grows.

AI assistant built in

Relay has its own MCP server, which lets an AI assistant work with my tasks directly. In plain conversation I can ask it to:

  • Audit my workload and flag anything overdue, unscheduled or stalled
  • Schedule or reschedule tasks
  • Change priority or status
  • Pull the latest from monday
  • Send today's plan to Slack

Two safeguards matter here. First, the assistant can't make silent bulk changes. Anything that edits a task returns a proposed plan and waits for my confirmation, so a loose request like "clean up my week" never turns into a dozen surprise reschedules. Only the read only audit runs freely.

Second, the assistant, the app and the scheduled jobs all run through the same core logic. A change made by the AI behaves exactly like one made by hand, including syncing back to monday. Nothing drifts out of step.

From personal tool to multi user

Relay started as a single user app. Once other people showed interest, I made it multi user before any of their data existed, which is far cheaper than retrofitting later.

Each person now connects their own monday account and Slack workspace, and the AI assistant uses a personal access key that identifies who is asking. Every screen, sync and assistant action is scoped to its owner. One user can never see or touch another user's tasks, and an automated test suite proves it on every change.

Results

Relay is the tool I plan my working day in. New assignments reach my phone within seconds, my morning plan is waiting in Slack before I start, and monday stays accurate for the team without double entry. An audit by the AI assistant catches slipping tasks before they become a problem.

The build went through phased milestones, each with a working checkpoint and its own automated tests, and finished with 64 passing tests across sync, security and user isolation.

Tech stack

Laravel, Vue 3, Vite, Pinia, PHP 8.4, Node.js, monday.com API with webhooks and OAuth, Slack API, Web Push, Progressive Web App, MCP server.

What I took from it

  • Two way sync is mostly about the edge cases: loops, races, deletes and conflicts. Deciding those rules up front, before writing the sync, is what made it reliable.
  • Keeping all business logic in one shared core made adding the AI assistant almost trivial, because it reuses the same paths as the app.
  • Building for one user first, with a clear path to many, let me ship fast without boxing myself in.

Let's get your website started

Take the first step toward a stunning, high-performing website that works for your business.
Let's get started
arrow-right linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram