Family todo sharing app with group-based list sharing, role-based access control, and invite-via-link collaboration.
Hip Hip started as a personal todo app and evolved into something more interesting when I added group sharing. The core question: how do you share todo lists between family members with proper access control, without making the UX feel like an enterprise tool?
The answer is groups with roles. Create a group, invite members via a cryptographically secure link (7-day expiry), and share your todo lists with the group. Admins can manage members and settings, Members can share their own lists and edit items, Viewers get read-only access. Anyone can leave a group via self-removal.
The backend follows hexagonal architecture — domain entities with validation, application services for business logic, and adapters for PostgreSQL, GraphQL, JWT authentication, and bcrypt password hashing. The GraphQL API exposes queries for groups, invitations, and mutations for the full CRUD and invitation flow. Dataloaders prevent N+1 queries on group members and lists.
The React frontend shows a grid of group cards with member avatars (each user gets a random colour from an 8-colour palette on registration). Group detail views show shared lists, admin settings, and an invitation modal with a copy-link button. The whole stack runs in Docker Compose for local development.