Repository navigation
feat(routing): retire /projects and redirect it to the main app (fixes #402) - #432
Merged
0xdevcollins merged 3 commits intoOct 22, 2026
Merged
Conversation
…dlessfi#402) The main Boundless app already owns the public projects directory. Two directories for the same projects, with different filters and counts, is confusing, so this app keeps only the Featured projects row on the landing page and permanently redirects every retired `/projects` path to the main app. - Redirect `/projects` and `/projects/:path*` with a permanent 308 in `proxy.ts`. The destination is built from the shared `mainAppUrl` helper and never forwards the incoming query string, since the filter params differ between the two apps. `next.config.ts` redirects cannot drop the query in Next 16, so this lives in the proxy. - Delete the `/projects` route (`app/projects/`) and the components only it used (`projects-view`, `projects-grid`, `use-projects`, `category-tabs`, `discover-header`). `filter-rail.tsx` and `filter-sheet.tsx` stay: the builders directory still uses both. - Move `to-project-card.ts` next to its last user, `featured-projects.tsx`, and point the Featured row's "View all" at the main app via `mainAppUrl`. - Drop `/projects` from `lib/seo/routes.ts` so the sitemap stops listing it, and from the SEO check's HTML routes. Includes `lib/main-app.ts` from the boundlessfi#401 dependency so the branch builds on its own; it will de-dup when boundlessfi#401 merges.
|
@Sendi0011 is attempting to deploy a commit to the Threadflow Team on Vercel. A member of the Team first needs to authorize it. |
|
@Sendi0011 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! 🚀 |
0xdevcollins
added a commit
to lmduy2612/builders
that referenced
this pull request
Oct 22, 2026
Conflicts resolved: - stats-strip.tsx: keep the shared STATS/fetchTotal from landing-queries.ts. Main (boundlessfi#433) dropped the Teams stat, so drop it from landing-queries.ts too (and PublicOrganizationListDto from CountedList); otherwise the move would have brought Teams back and prefetched /organizations on the server. - featured-projects.tsx: keep the shared featured query, import toProjectCard from its new home next to it (boundlessfi#432) and keep mainAppUrl for "Browse all projects". - builders-view.tsx: keep the shared URL parsing from use-builders.ts and the "How to get listed" hook-up from boundlessfi#428, in the file's current quote style.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Resolves #402.
The main Boundless app already owns the public projects directory at
https://boundlessfi.xyz/projects. This app had a second one at/projects, with different filters and different counts — two directories for the same projects. This PR retires the local directory, redirects every/projectspath to the main app, and keeps only the Featured projects row on the landing page.Changes
Redirect
/projectsand/projects/:path*permanently redirect (308) to the main app's/projects.proxy.ts, notnext.config.ts, so the incoming query string is not forwarded. The destination is built with the sharedmainAppUrlhelper, so the origin still comes fromNEXT_PUBLIC_BOUNDLESS_APP_URL(same fallback aslib/seo/site.ts).redirects()innext.config.tsalways appends the request's query string to the destination in Next 16 — there is no config option to drop it. I confirmed this against the installed source (prepareDestinationmergesargs.queryunconditionally) and by request. Since the filter params differ between the two apps, forwarding them would land users on a wrong filter state. The equivalent config-only redirect (as in feat(routing): retire /projects route with permanent redirect to main app (fixes #402) #420) does forward the query.Deleted
app/projects/—page.tsx,opengraph-image.tsx,twitter-image.tsx.components/discover/—projects-view.tsx,projects-grid.tsx,use-projects.ts,category-tabs.tsx,discover-header.tsx.filter-rail.tsxandfilter-sheet.tsxare untouched: the builders directory still uses both.Moved & re-pointed
components/discover/to-project-card.ts→components/landing/to-project-card.ts, next to its last user.mainAppUrl('/projects').SEO
/projectsremoved fromlib/seo/routes.ts, so the sitemap no longer lists it./projectsJSON-LD (collectionPageSchema+breadcrumbSchema) went away with the route./projectsremoved from theHTML_ROUTESlist inscripts/seo-check.mjs.Dependency
lib/main-app.tsfrom Send builder and project cards to the main Boundless app #401 (not yet merged) so this branch builds on its own. It is byte-identical to Send builder and project cards to the main Boundless app #401's file and will de-duplicate on rebase once Send builder and project cards to the main Boundless app #401 lands. This branch's only use of it ismainAppUrl.Verification
npm run buildroute table no longer lists/projectsor its image routes and registersƒ Proxy (Middleware):/sitemap.xmllists only/,/about,/builders.Acceptance criteria
curl -sI http://localhost:3000/projectsreturns a permanent redirect tohttps://boundlessfi.xyz/projects/projects/anythingredirects the same waynpm run buildroute table no longer lists/projectsor its image routes/sitemap.xmlhas no/projectsentry/projectsnpm run lint,npx tsc --noEmit, andnpm run buildpassScreenshot
The Featured projects row on the landing page, with "Browse all projects" now pointing at the main app: