Task: Build Creator Onboarding & Profile Module API
Overview
MyFans needs a dedicated creator identity beyond the base User record. Fans sign up as users; creators must onboard with public profile metadata (bio, handle, banner, category) before appearing in discovery flows.
This issue introduces a CreatorProfile module linked 1:1 to User, with onboarding status and public read endpoints.
Goals
CreatorProfile entity: userId, handle (unique), displayName, bio, bannerUrl, category, isOnboarded, createdAt
POST /creators/onboard — authenticated user becomes creator (RBAC role upgrade or stub)
GET /creators/:handle — public profile (no auth)
PATCH /creators/me — owner updates profile
- Validate handle format (
^[a-z0-9_]{3,30}$) and uniqueness
- Migration + Swagger + seed one creator profile
Deliverables
creators module (entity, service, controller, DTOs)
- TypeORM migration with unique index on
handle
CreatorResponseDto (public) vs CreatorPrivateDto (owner)
- Unit tests for handle validation and duplicate handle conflict
docs/creators-api.md with curl examples
Acceptance Criteria
- User can onboard as creator and receive a persisted profile
- Duplicate handles return
409 Conflict
- Public endpoint never exposes email/password
- Owner can update bio/banner; non-owner gets
403
- Swagger documents all creator routes
- At least 8 meaningful tests
Task: Build Creator Onboarding & Profile Module API
Overview
MyFans needs a dedicated creator identity beyond the base
Userrecord. Fans sign up as users; creators must onboard with public profile metadata (bio, handle, banner, category) before appearing in discovery flows.This issue introduces a
CreatorProfilemodule linked 1:1 toUser, with onboarding status and public read endpoints.Goals
CreatorProfileentity:userId,handle(unique),displayName,bio,bannerUrl,category,isOnboarded,createdAtPOST /creators/onboard— authenticated user becomes creator (RBAC role upgrade or stub)GET /creators/:handle— public profile (no auth)PATCH /creators/me— owner updates profile^[a-z0-9_]{3,30}$) and uniquenessDeliverables
creatorsmodule (entity, service, controller, DTOs)handleCreatorResponseDto(public) vsCreatorPrivateDto(owner)docs/creators-api.mdwith curl examplesAcceptance Criteria
409 Conflict403