Skip to content
Back to skills

Baserow

ASecurity

Build database-powered applications with Baserow, the open-source no-code database. Use when a user asks to create spreadsheet databases, build API-connected workflows, manage relational data, or self-host Baserow as an Airtable alternative.

  • 142 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 27, 2026
testing-securitypythongobashdockerapidatabasefrontendbackend

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add TerminalSkills/skills --skill baserow --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Baserow?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Baserow
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terminalskills-baserow/badge)](https://www.skillsdirectory.com/skills/terminalskills-baserow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: baserow
description: >-
  Build database-powered applications with Baserow, the open-source no-code database. Use when a user asks to create spreadsheet databases, build API-connected workflows, manage relational data, or self-host Baserow as an Airtable alternative.
license: Apache-2.0
compatibility: "No special requirements"
metadata:
  author: terminal-skills
  version: "1.1.0"
  category: development
  tags: ["database", "spreadsheet", "airtable-alternative", "open-source", "no-code"]
---
# Baserow — Open-Source No-Code Database

## Overview

Baserow is an open-source no-code database platform and Airtable alternative, with a spreadsheet interface, a REST API, forms, and workflow automation, self-hosted on the user's own infrastructure. Use this skill when a user asks to create spreadsheet-style relational databases, build API-connected workflows, manage relational data, or self-host Baserow.

## Instructions

### Setup

```bash
# All-in-one image, pinned to a specific release (never :latest in production)
docker run -d --name baserow -p 80:80 -p 443:443 \
  -v baserow_data:/baserow/data \
  -e BASEROW_PUBLIC_URL='http://localhost' \
  baserow/baserow:2.3.3

# Or docker-compose.yml with the same image; production setups split into
# separate baserow/backend and baserow/web-frontend containers plus Celery
# workers (see the official "Install with Docker Compose" guide) and require
# SECRET_KEY, DATABASE_PASSWORD, and REDIS_PASSWORD to be set.
docker compose up -d
```

### Database Structure

```markdown
## Table Types and Fields

### Field Types
- Text, Long text, Number, Boolean, Date, URL, Email, Phone
- Single select, Multiple select (colored tags)
- Link to table (relationships between tables)
- Lookup (pull data from linked records)
- Rollup (aggregate linked records: SUM, COUNT, AVG)
- Formula (computed fields using other fields)
- File (attachments)
- Created by, Last modified, Auto-number

### Formulas
concat(field('First Name'), ' ', field('Last Name'))
if(field('Status') = 'Paid', field('Amount'), 0)
datetime_format(field('Created'), 'YYYY-MM-DD')
year(now()) - year(field('Birth Date'))
```

### REST API

Create a database token in the Baserow UI (per-table create/read/update/delete permissions) and send it as `Authorization: Token YOUR_DATABASE_TOKEN` — this is different from the `Authorization: JWT ...` header used by the web app's own user session.

```bash
# List rows with filtering (filter__<field>__<operator>, or filter__field_<id>__<operator>)
curl "https://baserow.northstar-robotics.internal/api/database/rows/table/412/?user_field_names=true&filter__Status__equal=Active&order_by=-Created" \
  -H "Authorization: Token YOUR_DATABASE_TOKEN"

# Create row
curl -X POST "https://baserow.northstar-robotics.internal/api/database/rows/table/412/?user_field_names=true" \
  -H "Authorization: Token YOUR_DATABASE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"Name": "Q3 renewal outreach", "Status": "Active", "Priority": "High"}'

# Update row
curl -X PATCH "https://baserow.northstar-robotics.internal/api/database/rows/table/412/1038/?user_field_names=true" \
  -H "Authorization: Token YOUR_DATABASE_TOKEN" \
  -d '{"Status": "Completed"}'

# Webhooks — trigger on row events
# Configure in UI: Settings → Webhooks
# Events: rows.created, rows.updated, rows.deleted
```

## Examples

### Example 1: Self-host Baserow and connect it to an external script

**User request:** "Set up Baserow on our server and give me a way to push new leads into a table from a Python script."

**Agent workflow:**
1. Deploy with the pinned `baserow/baserow:2.3.3` image (or docker-compose for a production split) and set `BASEROW_PUBLIC_URL` to the real hostname.
2. In the UI, create a "Leads" table with fields for Name, Email, Status, and Source, then create a database token scoped to that table only.
3. Give the user a `curl`/Python snippet using `POST /api/database/rows/table/<id>/?user_field_names=true` with the token to insert a row.
4. Point out the table ID and token belong to that one table, not the whole workspace.

**Output:** A running Baserow instance, a "Leads" table, and a working insert call the user's script can reuse.

### Example 2: Build a rollup across linked tables

**User request:** "I have a Clients table and an Invoices table — show total paid per client without duplicating data."

**Agent workflow:**
1. Add a "Link to table" field on Invoices pointing at Clients (this creates the reverse link on Clients automatically).
2. Add a Rollup field on Clients that sums the Invoices' Amount field, filtered or using a Lookup + Formula like `sum(lookup('Invoices', 'Amount'))` where Status = Paid.
3. Verify the rollup updates when a new invoice row is added.

**Output:** A "Total Paid" rollup column on Clients that stays in sync as invoices change, with no copied data.

## Guidelines

1. **Self-host for data sovereignty** — Baserow runs on your infrastructure; ideal for GDPR compliance and sensitive data
2. **Relationships over duplication** — Use "Link to table" fields instead of duplicating data across tables
3. **Lookups and rollups** — Pull related data with lookups; aggregate with rollups (no code needed)
4. **Form view for intake** — Create public forms for data collection; responses go directly to your database
5. **API for integration** — Use the REST API to connect Baserow data to your applications and workflows
6. **Granular permissions** — Set view/edit permissions per table, per group; share specific views without full database access
7. **Templates for quick start** — Use built-in templates (CRM, project tracker, content calendar) and customize
8. **Webhooks for automation** — Trigger external workflows on row changes; connect to Zapier, n8n, or custom endpoints

Files in this skill

  • SKILL.md4 KB
  • _scores.json1.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…