Skip to content

feat(cards): send builder and project cards to the main app - #425

Merged
0xdevcollins merged 3 commits into
boundlessfi:mainfrom
abimbolaalabi:fix/issue-401-main-app-links
Oct 22, 2026
Merged

0xdevcollins merged 3 commits into
boundlessfi:mainfrom
abimbolaalabi:fix/issue-401-main-app-links

Conversation

@abimbolaalabi

Copy link
Copy Markdown
Contributor

Overview

This PR sends the builder and project cards to their public detail pages in the main Boundless app instead of the dead /builders/<username> and /projects/<slug> routes on this showcase. It adds one shared URL helper for every outbound card link and replaces the placeholder project logo with the project's real logo or initials.

Related Issue

Closes #401

Changes

Main app URL helper

  • [ADD] lib/main-app.ts

    • mainAppUrl(path) builds an absolute URL from siteConfig.parentUrl.
    • profileUrl(username) and projectUrl(slug) encode the path segment.
    • All builder and project card links now build their URL through this module.
  • [MODIFY] components/landing/to-builder-card.ts

    • Top builders row links to the main app profile.
  • [MODIFY] components/discover/to-builder-directory-card.ts

    • Directory cards link to the main app profile and keep the existing "no username, no link" rule.
  • [MODIFY] components/discover/to-project-card.ts

    • Project cards link to the main app project page using the slug.
    • Projects without a slug render without a link; there is no id fallback.
  • [MODIFY] components/cards/opportunity-card.tsx

    • Shows the project's own logo, falling back to deriveInitials(title) when it is missing.
    • Cards without a detail URL render as plain cards, matching builder cards.
    • Links open in the same tab.
  • [MODIFY] components/cards/types.ts

    • Adds the optional logo field and makes detailUrl optional for unlinked cards.
  • [DELETE] public/brand/test.png

    • Nothing else used the placeholder image.

Verification Results

npm run lint      ✅ passed
npx tsc --noEmit  ✅ passed
npm run build     ✅ passed

Headless browser checks against the stage API:

/            builder cards -> https://boundlessfi.xyz/profile/<username> ✅
/builders    builder cards -> https://boundlessfi.xyz/profile/<username> ✅
/projects    project card  -> https://boundlessfi.xyz/projects/useroutr-2 ✅
no /builders/<username> or /projects/<slug> card links remain     ✅
test.png occurrences in rendered project cards                    0 ✅
project without a logo renders initials ("US" for Useroutr)       ✅

Screenshots

Landing page builder cards:

Landing page builder cards

Projects page card with initials fallback:

Projects page card

Acceptance Criteria Status
Clicking a builder card on / and on /builders opens boundlessfi.xyz/profile/<username> ✅ verified in rendered pages
Clicking a project card on / opens boundlessfi.xyz/projects/<slug> ✅ mapper uses the slug; verified on /projects
No card links to a /builders/<username> or /projects/<slug> path on this app ✅ no such card links remain
The main app origin appears in exactly one helper module, read from siteConfig.parentUrl ✅ all card URLs go through lib/main-app.ts
Project cards show the real project logo or initials, never test.png ✅ logo used when present, initials otherwise
npm run lint, npx tsc --noEmit, and npm run build pass ✅ all three pass
The PR includes a screenshot of the landing page cards ✅ screenshots above

@vercel

vercel Bot commented Oct 17, 2026

Copy link
Copy Markdown

@abimbolaalabi 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 Oct 17, 2026

Copy link
Copy Markdown

@abimbolaalabi 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

@0xdevcollins

Copy link
Copy Markdown
Contributor

Thanks @abimbolaalabi , the links look right. I checked builder and project cards, same-tab navigation, encoding, and the unlinked cases.

One change before merge: please drop unoptimized from the project logo Image. Production logos are all on the Cloudinary path next.config.ts already allows, and without the optimizer a 24px logo downloads the original file (one real logo is 1.2 MB raw vs 654 bytes optimized). While you’re there, consider using Avatar size='xs' for the logo so a dead logo URL falls back to initials, and set the alt to the project title instead of org.

@abimbolaalabi

Copy link
Copy Markdown
Contributor Author

@0xdevcollins
Implemented the requested changes:

  • Removed unoptimized from the project logo so Cloudinary logos go through the image optimizer.
  • Switched the logo to Avatar size="xs" with the project title as alt; missing or broken logo URLs fall back to the project initials.
  • Merged main to resolve the conflict in avatar.tsx, reusing the fallback implementation already there.
    Lint and typecheck pass.

@0xdevcollins
0xdevcollins merged commit 1f7d9e7 into boundlessfi:main Oct 22, 2026
1 of 2 checks passed
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.

Send builder and project cards to the main Boundless app

2 participants