Today I finished the invitation flow for my team task management project.
At first, the feature looked simple: invite a user by email and let them join a team. But once I started building it, I realized there were a few real-world cases to handle.
What the invitation flow does
A team owner can invite someone using their email address.
When an invitation is sent:
the system checks if the user is already a team member
it checks if there is already a pending invitation for that same email in that team
if everything is valid, an invitation record is created with a token
When the invited user accepts:
the system verifies the logged-in user matches the invited email
the user gets attached to the team
the invitation gets deleted
What I learned
The biggest lesson was learning where code should live.
My controller worked, but it started getting crowded fast.…