Hi WeWeb team,
I’m building a club website with WeWeb + Supabase and have two use cases involving dynamic content, SEO metadata, and collection pages. I’ve found this area quite confusing and your documentation doesn’t seem to cover the Supabase plugin scenario in detail. I’d love some feedback on whether my approach is correct or if there’s a better way.
Use case 1: Flying Sites (working, but want to confirm it’s correct)
I have a Sites listing page and a SiteDetail collection page. Sites change very rarely (~10 sites, maybe one added per year). It’s important to SEO and to have a fixed url.
My setup:
- SiteDetail is a collection page driven by a single static REST API collection pulling from a Supabase view (
site_with_detail) - All page content AND SEO metadata (title tag, meta description, OG fields) are bound to
context.page.datafrom the static collection - The Sites listing page also uses this same static collection to render the grid
- No dynamic collection is used anywhere for sites
This works correctly — metadata binds fine, navigation works, pages pre-render. Is this the right approach? Are there any downsides I’m missing? My concern is that updates won’t propagate unless i redeploy - is that correct?
Use case 2: Learning Articles (problematic)
I have a Learning listing page (all articles) and a LearningArticle page. Articles are added more frequently and I want new articles to appear immediately without a redeploy. I also have filtering on the listing grid. A fixed URL is crucial, SEO is helpful but not available (I think) with the approach below.
What I tried first:
- LearningArticle as a collection page with a static REST API collection (for SEO metadata + slug enumeration) and a separate dynamic Supabase collection (for page content, filtered by slug)
- Listing page linked to LearningArticle via “Link to collection page”
The problem: clicking an article on the listing page opened the wrong article. The listing grid uses the dynamic collection (so new articles appear immediately), but “link to collection page” matches by position against the static collection — and when the listing has filters applied, the position in the dynamic list no longer matches the position in the static list. This seems like a fundamental mismatch.
What I’ve ended up with:
- LearningArticle as a normal page (not a collection page) with a slug passed as a query parameter from the listing
- A single dynamic Supabase collection on LearningArticle filtered by
pageParameters['slug'] - Static title and no bound metadata, because the metadata binding panel only shows static collections
This works for navigation and content, but I’ve lost SEO metadata binding on individual article pages.
Your documentation shows an approach using an API call alternative backend which doesnt work with Supabase (I think) because supabase is fixed to dynamic in weweb. I think i am effectively doing the same with the REST API call.
My questions:
-
Is there a supported pattern for having a collection page where the listing uses a dynamic collection (so new items appear immediately and filtering works), while the collection page itself still gets pre-rendered with correct SEO metadata?
-
Is there a way to bind page metadata (title tag, meta description) to a dynamic collection or page parameter on a collection page? The binding picker in the metadata panel only shows static collections.
-
For Use Case 1 (sites), is it correct/safe to use the same static collection for both the listing page and as the collection page driver — or is there a reason to separate them?
This feels like a pretty standard CMS-style pattern (listing page → detail page with SEO) and I’m surprised there isn’t clearer guidance for it. Any help appreciated!
Thanks