Investigations

Hip Hip

TypeScript February 2026

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.

What this project demonstrates

Group-based list sharing with invite-via-link (7-day expiry)
Role-based access control: Admin, Member, Viewer
Hexagonal architecture with clean domain/app/adapter separation
GraphQL API with dataloaders to prevent N+1 queries
React frontend with group cards and coloured member avatars
PostgreSQL with migration-managed schema, Docker Compose dev setup

Technologies

ReactGoGraphQLPostgreSQLCollaboration

© 2026 Jonathan Leahy · v0.8.1-31-g196fa14