Basecamp team workload board with drag and drop rebalancing

By General Input

See every person's open Basecamp to-dos from all projects in one board, spot who is overloaded, and drag work to someone who has room.

Integrations

  • Basecamp
  • Google Calendar

Type

App

Categories

  • Operations
  • HR & People

Build me a workload board app for Basecamp that shows who on my team is actually overloaded across every project. Basecamp cannot show this today: it can tell me about one project at a time, or about my own assignments, but never about everyone's load side by side. I am a delivery manager and I reopen this board every week to rebalance work.

The app is one screen: a horizontally scrolling board of columns. Each column is a person from Basecamp List People. Each column holds that person's open, incomplete assigned to-dos gathered from every project, sorted by due date with overdue items first. Each card shows the to-do title, the project it belongs to, and its due date, with overdue dates styled distinctly. People with no open work still get a column so I can see who is free.

Each column header shows the person's name, their total open to-do count, a count of overdue items, and a count due this week. When a person's open count passes a configurable per person limit, the column header switches to a warning colour so overload is obvious at a glance. The limit is an app setting I can edit, defaults to 10, and persists between sessions.

Important build note about assembling the data. Basecamp's Get My Assignments and Get Due Assignments operations only return the signed in user's own work, so they cannot power a cross person board. Do not use them for the index. Instead the handlers must build the per person index by walking the hierarchy: call List Projects to get the projects, then Get a Project for each one to read its dock and find the to-do set id, then List To-Do Lists on that to-do set, then List To-Dos on each list, filtering to incomplete items. Then group every to-do by its assignees, so a to-do with two assignees appears in both people's columns.

That walk is many requests, so treat cost seriously. Assemble the index once per refresh and reuse it for every column rather than re-fetching per person. Basecamp rate limits to roughly 50 requests per 10 seconds and returns 429 with a Retry-After header, so throttle the walk with limited concurrency and honour Retry-After when it happens rather than failing the whole board. Basecamp responses carry ETag and Last-Modified, so store them and send If-None-Match on repeat fetches to skip unchanged data on later refreshes. Give me a refresh button and a last updated timestamp, and show a progressive loading state while the walk runs so the board is not a blank screen.

Actions I can take on the board. Dragging a card into another person's column reassigns that to-do to them using Update a To-Do. I can edit a due date inline on a card. I can tick a card off to complete it using Complete a To-Do, which removes it from the column and updates the header counts. Apply these changes optimistically in the UI and revert the card to its previous position or value if the Basecamp call fails, with a clear error message.

Critical correctness rule for saving. Basecamp's Update a To-Do clears any field that is omitted from the request. A naive reassign that sends only the assignees will wipe the to-do's description and due date. So every save must resend content, description, assignees and due date together, carrying over the to-do's current values for anything I did not change. Keep the full current state of each to-do in the index so these round trips are always complete.

Optional capacity overlay. For each person, show how many hours of meetings they already have booked for the current week, read from Google Calendar List Events over the week window, using List Calendars to resolve the person's calendar by their Basecamp email address. Show it in the column header next to the to-do counts, so I can tell the difference between someone with few to-dos and someone who genuinely has capacity. This overlay depends on whether I can actually see colleagues' calendars, so it must degrade gracefully: if a calendar is missing or not readable, show a quiet 'no calendar access' note on that column instead of an error, and keep the rest of the board fully working. The whole overlay should also be toggleable off.

Related prompts

Explore more prompts
Front desk appointment confirmation board for the next 3 daysAppointment confirmation board built on WhatsApp repliesPlan a field sales day around drive time and neglected accountsShort-term rental turnover console for Home AssistantRun your HoneyBook booking season from one calendarA keep in touch board built on your Google ContactsSee who actually joined your recurring Google Meet callsSee which of your recurring meetings are one person talkingHiring debrief room where every rating shows its evidenceSee which meetings are wrecking your sleep and recovery