Basecamp team workload board with drag and drop rebalancing
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.
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.
What does this prompt do?
- Gives every person on your team their own column, filled with the open work assigned to them across all of your Basecamp projects rather than one project at a time.
- Shows each card with its title, the project it came from, and its due date, with a count of overdue and due this week at the top of every column.
- Flags a person's column in a warning colour once they pass the workload limit you set, so overload is visible at a glance instead of buried in project views.
- Lets you drag a card from an overloaded person to someone with room, change a due date, or tick work off, with every change saved straight back to Basecamp.
What do I need to use this?
- A Basecamp account with access to the projects and people you want to see on the board.
- Permission to reassign work in Basecamp, since dragging a card changes who a to-do belongs to.
- Optional: a Google Calendar login if you want the meeting hours overlay, plus the ability to view your colleagues' calendars.
How can I customize it?
- Set the workload limit that turns a column to a warning colour, and raise or lower it as your team's normal load changes.
- Choose which projects feed the board, for example only active client work, so archived or internal projects do not skew the counts.
- Turn the meeting hours overlay on or off, or point it at a different week when you are planning ahead.
FAQs
Why can't I just use Basecamp's own assignments view?
Does moving a card actually change anything in Basecamp?
Will reassigning someone wipe the due date or the notes?
Do I need Google Calendar for this to work?
How up to date is the board, and will it slow down on a big account?
Related templates
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
Open one screen each morning to see every rental's locks, temperature, humidity, and next check-in, then prep the next stay in a single click.
A month by month view of every booked date, what it is worth, and which weekends are still open, with your personal calendar layered on top.
See which relationships are going cold, set how often you want to reach out to each person, and let the board sort itself from then on.
An attendance register built from real join and leave times, flagging the people who accepted the invite and then never showed up.
Open one board to see how speaking time was really split in every standing meeting, then get facilitation notes you can act on next time.
Stop guessing who on your team is buried.
Build a workload board that pulls every project's to-dos into one view and lets you rebalance the week in a single drag.