Skip to content

Epic 19 — Producer Folders (Save for Later)

Producers save and organise talent profiles into named folders. Referenced in spec "AFTER THOUGHTS #5".


BE-FOLDERS-001 — Producer folders model and API

  • [x] Done

Files:

  • Edit: prisma/schema.prisma — add ProducerFolder, FolderEntry models
  • Run: pnpm db:migrate
  • Edit: src/graphql/schema/index.ts
  • Create: src/graphql/resolvers/folders.ts
  • Create: src/services/folders/index.ts

Schema:

prisma
model ProducerFolder {
  id         String        @id @default(cuid())
  producerId String
  producer   ProducerProfile @relation(...)
  name       String
  entries    FolderEntry[]
  createdAt  DateTime      @default(now())
  updatedAt  DateTime      @updatedAt
  @@map("producer_folders")
}

model FolderEntry {
  id        String          @id @default(cuid())
  folderId  String
  folder    ProducerFolder  @relation(...)
  talentId  String
  talent    TalentProfile   @relation(...)
  note      String?         // e.g. "good energy", "needs improv skills"
  tags      String[]        @default([])
  addedAt   DateTime        @default(now())
  @@unique([folderId, talentId])
  @@map("folder_entries")
}

Mutations: createFolder(name), renameFolder(id, name), deleteFolder(id), addTalentToFolder(folderId, talentId, note?), removeTalentFromFolder(folderId, talentId), updateFolderEntry(entryId, note?, tags?)
Queries: myFolders: [ProducerFolder!]!, folderEntries(folderId: ID!): [FolderEntry!]!


FE-FOLDERS-001 — Producer folders UI

  • [x] Done

Files:

  • Create: apps/app/src/pages/folders/FoldersPage.tsx
  • Create: apps/app/src/pages/folders/FolderDetailPage.tsx
  • Create: apps/app/src/components/folders/SaveToFolderButton.tsx — appears on every TalentCard/profile
  • Create: apps/app/src/hooks/useFolders.ts
  • Edit: apps/app/src/App.tsx — add /folders and /folders/:id routes

Description:

  • Folders list: grid of folder cards (name, talent count, last updated). "New folder" CTA.
  • Folder detail: talent grid with note/tag chips per entry. "Export" button (opens ExportPitchModal from Epic 18). "Remove" per entry.
  • Save button: ⭐ icon on every TalentCard and talent profile page. Tap → dropdown shows existing folders + "New folder" option. Saved state persists (filled star).
  • Cross-device sync via the ProducerFolder backend model.