Files
work-club-manager/openspec/changes/archive/2026-03-20-replace-uuids-with-names/proposal.md
T
WorkClub Automation 1aea91da55 fix: Bind Next.js server to 0.0.0.0 for external access
The deployment was unreachable because the Next.js server was binding
to localhost:3000 (127.0.0.1) instead of 0.0.0.0, making it only
accessible inside the Docker container.

- Added HOSTNAME=0.0.0.0 to Dockerfile build and runtime stages
- Added HOSTNAME=0.0.0.0 to docker-compose.yml for nextjs service

This allows the server to accept connections from external hosts.
2026-03-20 13:29:21 +01:00

1.6 KiB

Why

Currently, the frontend displays raw UUIDs for user references (assignee, creator, members) which creates a poor user experience. Users should see meaningful names like "Alice Smith" instead of "a1b2c3d4-e5f6-7890-abcd-ef1234567890". The backend already stores display names in the Member entity, but the API DTOs don't expose them.

What Changes

  • Backend DTOs: Add name fields to task and shift DTOs
    • TaskListItemDto: Add string? AssigneeName
    • TaskDetailDto: Add string? AssigneeName and string CreatedByName
    • ShiftSignupDto: Add string MemberName
  • Backend Services: Update TaskService and ShiftService to query and populate member names
    • Join with Members table to fetch display names
    • Include names in DTO construction
  • Frontend Types: Update TypeScript interfaces to include new name fields
    • TaskListItemDto, TaskDetailDto, ShiftSignupDto interfaces
  • Frontend UI: Replace UUID displays with names
    • Task list: show assignee name instead of ID
    • Task detail: show assignee and creator names
    • Shift detail: show member names in signup list

Capabilities

New Capabilities

  • member-name-enrichment: API DTOs include human-readable member names alongside IDs

Modified Capabilities

  • None (this is purely an enhancement to existing capabilities)

Impact

  • Backend: TaskService.cs, ShiftService.cs, and DTOs in WorkClub.Application
  • Frontend: Tasks pages, Shifts pages, and React hooks (useTasks.ts, useShifts.ts)
  • Database: Additional JOIN queries on Members table (no schema changes)
  • API Response: New optional fields in existing endpoints (backward compatible)