Skip to content

Feat/builders directory grid - #372

Open
Shadow-MMN wants to merge 2 commits into
boundlessfi:mainfrom
Shadow-MMN:feat/builders-directory-grid
Open

Feat/builders directory grid#372
Shadow-MMN wants to merge 2 commits into
boundlessfi:mainfrom
Shadow-MMN:feat/builders-directory-grid

Conversation

@Shadow-MMN

@Shadow-MMN Shadow-MMN commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Closes #364


feat(builders): add /builders route with directory grid

The landing page "View all builders" button links to /builders, which 404s today. This PR adds the route with a paginated directory grid.

What changed

  • app/builders/page.tsx - New route matching the shape of app/projects/page.tsx (metadata, SiteHeader, BuildersView, SiteFooter)
  • components/discover/use-builders.ts - Query hook for GET /users/directory with page, limit, and search params. Row type derived from Schemas['BuilderListItemDto']
  • components/discover/to-builder-directory-card.ts - Separate mapper from to-builder-card.ts (which maps /users/top-builders). Directory DTO has nullable name/username, no followers/projects, and extra fields (bio, status, joinedAt)
  • components/discover/builders-grid.tsx - Grid of BuilderCard with Pagination, including pending/error/empty states
  • components/discover/builders-view.tsx - Owns search, debounce, and page state (modelled on projects-view.tsx)
  • lib/api/types.ts - Fixed stale UserDirectoryItemDto comment to BuilderListItemDto

Verification answers

  1. Pagination shape: The OpenAPI snapshot declares a bare array, but the backend actually returns paginated data (confirmed by StatsStrip reading pagination.total from the same endpoint). Used Paginated<BuilderListItemDto>.
  2. Schema changes: The generated schema already has BuilderListItemDto with the correct fields. No codegen was needed.

The doc comment referenced `Schemas['UserDirectoryItemDto']`, which does
not exist in the generated schema. The real name is `BuilderListItemDto`.
Adds the builders directory page so the landing "View all builders"
CTA no longer 404s. The page fetches paginated data from
GET /users/directory with search and page/limit support, rendering
BuilderCard in a responsive grid with skeleton, error, and empty
states.

- use-builders.ts: query hook derived from generated BuilderListItemDto
- to-builder-directory-card.ts: separate mapper (no followers/projects)
- builders-grid.tsx: grid + pagination, modelled on projects-grid
- builders-view.tsx: owns search, debounce, and page state
- app/builders/page.tsx: route with metadata, header, footer

Filters and sort are out of scope and will land in follow-up issues.
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

@Shadow-MMN is attempting to deploy a commit to the Threadflow Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Aug 27, 2026

Copy link
Copy Markdown

@Shadow-MMN Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Benjtalkshow Benjtalkshow left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! lint, tsc and build pass here.

Please fix:

  1. builders-view.tsx:60 passes () => {} and filtersOpen={false}, so the Filters button and mobile filter icon do nothing.
  2. builder-card.tsx:103 always draws the footer divider, but the mapper sets no followers or projects, so cards end with a stray rule.
  3. to-builder-directory-card.ts:23 builds /builders/null when username is null.

#370 and #371 add this same page. Please hold before rebasing.

Add a screenshot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add the /builders route with the directory grid

2 participants