Skip to content

TabularisDB/website

Tabularis

tabularis-website

tabularis.dev — the marketing site, wiki, blog and changelog for Tabularis, the open-source desktop client for modern databases.

Deploy website to Pages Discord

About

This repository hosts the source of tabularis.dev. It is a Next.js static-export site deployed to GitHub Pages on every push to main.

Content served here:

  • Home, solutions and comparison pages — positioning content for Tabularis as a PostgreSQL/MySQL/SQLite client.
  • Wiki — product documentation (connections, editor, notebooks, plugins, MCP, etc.).
  • Blog — release notes and long-form posts rendered from Markdown in content/posts/.
  • Changelog — generated from the upstream CHANGELOG.md of the main app repo.
  • Download page — always points at the latest Tabularis release, driven by the upstream app version.
  • Plugin registry — rendered from plugins/registry.json, the same registry consumed by the desktop app.

The site is statically generated (next build with output: "export") so it can be hosted on GitHub Pages without a runtime server.

Relation to the main app repo

The main app lives at TabularisDB/tabularis. This website used to live inside that repo under website/ as part of a pnpm workspace and was released in lockstep with the app.

It is now a standalone repo. Three pieces of data still come from the app repo — they are fetched over HTTPS from raw.githubusercontent.com before each build:

Upstream file Where it lands Consumed by
src/version.ts src/lib/version.ts APP_VERSION used in download links, SEO metadata, JSON-LD
CHANGELOG.md CHANGELOG.md /changelog page (src/lib/changelog.ts)
plugins/registry.json plugins/registry.json /plugins page (src/lib/plugins.ts)

The fetcher is scripts/fetch-app-data.mjs. It hits https://raw.githubusercontent.com/${TABULARIS_APP_REPO}/${TABULARIS_APP_REF}/... and writes the files into place. Defaults: TABULARIS_APP_REPO=TabularisDB/tabularis, TABULARIS_APP_REF=main.

Run it manually:

pnpm fetch-app-data

In CI the step runs before pnpm build — see .github/workflows/static.yml.

The three fetched files are committed to the repo so local development works without network access; CI overwrites them with the latest upstream versions.

Triggering rebuilds from the app repo

The deploy workflow accepts a repository_dispatch event of type app-data-updated. After tagging a new release or updating the plugin registry in the app repo, dispatch it from a GitHub Action:

- name: Trigger website rebuild
  run: |
    gh api repos/TabularisDB/website/dispatches \
      -f event_type=app-data-updated
  env:
    GH_TOKEN: ${{ secrets.WEBSITE_DISPATCH_PAT }}

(WEBSITE_DISPATCH_PAT must be a PAT with repo scope on this repo.)

Development

Prerequisites

  • Node.js 20+
  • pnpm (pinned via packageManager in package.json)

Install

pnpm install

Run the dev server

pnpm dev

Then open http://localhost:3000.

Refresh app data (version, changelog, plugin registry)

pnpm fetch-app-data

Build the static site

pnpm build

The build:

  1. Generates the Orama search index into public/search-index.json (scripts/generate-search-index.mjs).
  2. Runs next build with output: "export" — the static site is emitted to out/.
  3. Generates public/latest-posts.json for the widget on the home page (scripts/generate-latest-posts.mjs).

The output in out/ is what GitHub Pages serves.

Project layout

.
├── content/                  # Markdown sources
│   ├── home.md
│   ├── posts/                # blog posts
│   ├── seo/                  # landing-page copy
│   └── wiki/                 # wiki articles
├── plugins/
│   └── registry.json         # fetched from app repo
├── public/                   # static assets (images, videos, robots.txt)
├── scripts/
│   ├── fetch-app-data.mjs    # pulls version/changelog/registry from app repo
│   ├── generate-search-index.mjs
│   └── generate-latest-posts.mjs
├── src/
│   ├── app/                  # Next.js App Router routes
│   ├── components/           # React components
│   └── lib/                  # data loaders and helpers (version, changelog, plugins, seo, ...)
├── CHANGELOG.md              # fetched from app repo
└── next.config.ts

Contributing

Typos, broken links, new wiki articles and new blog posts are all welcome.

  • Content: edit Markdown under content/ and open a PR.
  • UI or components: keep in mind the site must statically export — avoid runtime-only Next.js features (getServerSideProps, API routes, on-demand ISR, etc.).
  • Feature or bug reports about the app itself: please open them on TabularisDB/tabularis instead.

Join the conversation on Discord.

Acknowledgements

Special thanks to @Nako0 for creating the demo videos featured on the Tabularis website.

License

Apache License 2.0 — same as the main Tabularis project.