How to build a frontend for Baserow using Webstudio
Learn how to use Webstudio's visual builder to create a Baserow frontend with filters and dynamic pages.
By the end of this tutorial, you will have:
An overview page – Displaying all records from Baserow with links to detail pages
A details page – A dynamic page showing individual record data
Filters – Search and filter functionality
A sitemap – Dynamic sitemap containing your Baserow records
Why Baserow?
Baserow is an open-source, self-hostable database platform similar to Airtable. Benefits include:
Self-hosting option – Full control over your data
Open source – No vendor lock-in
API-first – Easy integration with external tools
Generous free tier – Great for getting started
Getting Started
1. Set Up Baserow
Create a Baserow account or self-host an instance
Create a table with your data (e.g., products, team members, portfolio items)
Add a URL-friendly field for slugs (alphanumeric characters and dashes only)
Generate an API token in your account settings
2. Create a Dynamic Page in Webstudio
Go to Pages > Create new page
Set the Dynamic Path (e.g.,
/items/:slug)The
:slugparameter will match your Baserow slug field
3. Configure the Resource Variable
Select Body in the Navigator
Go to Settings > Add Variable > Resource
Configure the API request:
URL: Your Baserow API endpoint with filter
Method: GET
Headers: Add
Authorization: Token YOUR_API_TOKEN
Dynamic URL with filter:
Replace:
YOUR_TABLE_IDwith your Baserow table IDslugwith your actual field name
4. Bind Data to Components
Add components for your content (Heading, Text, Image, etc.)
Use the Expression editor to bind data from your Resource
Access fields like:
baserowData.results[0].title
Creating the Overview Page
Fetching All Records
Create a Resource on your overview page that fetches all records:
Using Collection Component
Add a Collection component
Bind it to your Resource data
Design a card template inside the Collection
Each record automatically creates a card
Adding Filters
Create filter variables (e.g., search term, category)
Modify your Resource URL to include filter parameters
Bind filter inputs to your variables
The page updates when filters change
Creating a Dynamic Sitemap
Create a sitemap page (e.g.,
/sitemap.xml)Add a Resource fetching all records
Use the XML Node component
Map your records to sitemap URL entries
Markdown Content
If your Baserow records contain rich text or Markdown:
Add a Markdown Embed component
Bind the Markdown field to the component
Style the rendered HTML using child selectors
Related Resources
Last updated
Was this helpful?
