# 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.

- Workflow type: app
- Services: Basecamp, Google Calendar
- Categories: Operations, HR & People
- Published: 2026-08-14

## What it does

- 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 you'll need

- 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.

## Prompt

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.

## How to customize

- 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.

## FAQ

### Why can't I just use Basecamp's own assignments view?

Basecamp's assignment view only shows your own work, so there is no built in way to compare everyone's load side by side across projects. This board gathers the to-dos from every project you can see and groups them by person to build the view Basecamp is missing.

### Does moving a card actually change anything in Basecamp?

Yes. Dragging a card into another person's column reassigns that to-do in Basecamp itself, and ticking a card off marks it complete. The board works on your real data, not a separate copy.

### Will reassigning someone wipe the due date or the notes?

No. Basecamp clears anything left out when a to-do is saved, which is a common way to lose data. The app always resends the title, notes, assignees and due date together, so the rest of the to-do stays intact when you move it.

### Do I need Google Calendar for this to work?

No, it is optional. Without it the board still shows workload from Basecamp. With it, each column can also show how many hours of meetings that person already has booked this week, so you can tell the difference between someone with few to-dos and someone genuinely free. If you cannot see a person's calendar, that column simply skips the meeting hours.

### How up to date is the board, and will it slow down on a big account?

It loads current data when you open it, and there is a refresh button with a last updated time. Accounts with a lot of projects take a few seconds to gather everything, so the board collects the data once per refresh and reuses it rather than re-reading Basecamp for every column.

Use this prompt in General Input: https://www.generalinput.com/prompts/basecamp-team-workload-board-with-drag-and-drop-rebalancing