A Project Is Like a Company
While building a button to switch between 'me' and 'project', we realized a project isn't a folder — it's a workspace. Member-wide visibility, shared filters, and the invariant that 'if you can see it, you should hear about it.'
A Project Is Like a Company
A question came up during desktop work.
“I need a button that switches between me ↔ project 1 ↔ project 2.”
At first it sounded like a filter shortcut — a quick way to apply a project filter. But as the conversation went on, a completely different picture emerged.
“A project, if you think about it, is like a company.”
That one sentence settled the whole design. A company is not a folder. When you step into a company, you see that company’s books, its people, and its rules apply. Just as you don’t view your personal bank account and the company account on one screen, “my” tasks and “the project’s” tasks aren’t meant to be mixed — they’re meant to be switched between.
What Changes When You Switch
So we built a context, not a filter. Use the switcher at the right end of the top bar to enter a project, and:
- The list, calendar, kanban, and table all narrow to that project. You’re not applying a filter per screen — the ground you stand on changes.
- The Community and Me tabs disappear, replaced by a project info button. Inside the company, you don’t need your personal drawers. The project screen is its own thing too — no “me” menus, just that project’s goal, milestones, activity, and members.
- New tasks and memos naturally belong to that project.
- And the biggest change: you can see every member’s tasks. Until now, filtering by project still showed only your own. But a company’s books are meant to be shared by its people. We opened up the server’s visibility rules — only after verifying membership, of course.
- Saved filters come along for the ride. “My” filters live on my device; the project’s filters live on the server, shared by members. When one person pins a filter, it appears on everyone’s bar.
Milestones joined the flow as well. On a project-scoped calendar, milestones with target dates stand flagged like tasks, and clicking one takes you to the project’s milestones screen.
If You Can See It, You Should Hear About It
After building all this, we ran a code review and it surfaced something painful. We’d made every member’s tasks visible — but change notifications still went only to the person who made the change. With two people looking at the same table, one changes a task’s state and the other’s screen stays stale until a refresh.
“What you can see, you should hear about” — widening visibility means widening the event fan-out too. Obvious once written down. We fixed the events to fan out to every project member. This is exactly the kind of thing the eyes that built the feature can’t see; the review caught ten issues, and we fixed them all on the spot.
Journey’s Answer, One Month Later
A month ago we wrote a retrospective about building and then scrapping a new entity called Journey. The lesson then was that “an entity’s boundary only reveals itself when you connect it to other entities,” and the conclusion was to make Project better instead of adding something new.
Today feels like the first answer to that. We didn’t add a new concept — we made the existing Project something you can step into. A folder is something you open; a company is something you belong to. That difference flowed naturally into narrowed screens, swapped tabs, member visibility, and shared filters. Not bad for a day that started with a request for one button.