Skip to content
TabularisDBPublic

Latest commit

 

History

285 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


tabularis.dev tabularis.dev

Tabularis website

This repository powers tabularis.dev, the official website of Tabularis. It covers the product pages, docs, blog, changelog, downloads and plugin registry. The site is a static Next.js export, deployed to Vercel on every push to main.

Website · Docs · Blog · App repo


Discord

Vercel OSS Program


Table of Contents

What's on the site

  • Home, solutions and comparison pages: positioning content for Tabularis, with landing-page copy in content/seo/.
  • Wiki: product documentation (connections, editor, notebooks, plugins, MCP, ...) from content/wiki/.
  • Blog: release notes and long-form posts from content/posts/, with RSS and JSON feeds.
  • Changelog: generated from the app's CHANGELOG.md.
  • Download: stable and nightly builds, always pointing at the latest release.
  • Plugins: the plugin registry and the bounty board.
  • Roadmap, demos and sponsors pages.

Every page also gets an Open Graph image, rendered at build time (src/lib/og/). The site is exported with output: "export", so it runs on any static host without a server.

Data from the app repo

The site lives apart from the app, but part of its content comes from TabularisDB/tabularis, the Tabularium registry and the GitHub API. scripts/fetch-app-data.mjs pulls it before each build:

Source Lands in Used by
src/version.ts src/lib/download/version.ts APP_VERSION in download links, SEO, JSON-LD
CHANGELOG.md CHANGELOG.md /changelog
plugins/registry.json + Tabularium API (Tabularium wins) plugins/registry.json /plugins and the search index
Plugin manifest schemas public/schemas/ $schema URLs in plugin manifests
Tabularium plugin development docs content/wiki/plugin-development.md Wiki
Latest nightly-* GitHub release src/lib/download/nightly.ts Stable/nightly selector on /download
Repo stars and total downloads src/lib/github/stats.ts Stats shown on the site

The fetched files are committed, so local development works offline. If the registry or the GitHub stats are unavailable, the build keeps the committed copy instead of failing.

Variable Default
TABULARIS_APP_REPO TabularisDB/tabularis
TABULARIS_APP_REF main
TABULARIUM_REGISTRY_URL https://registry.tabularis.dev
GITHUB_TOKEN Optional, raises GitHub API rate limits

Rebuilds

.github/workflows/vercel-rebuild.yml calls a Vercel deploy hook (secret VERCEL_DEPLOY_HOOK_URL):

  • every 6 hours, to refresh stars, downloads and registry data;
  • manually, from the Actions tab;
  • on a repository_dispatch of type app-data-updated, sent by the app repo when the version, changelog or plugin registry changes:
- 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

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

Setup

pnpm install
pnpm dev

Then open http://localhost:3000.

Refresh app data

pnpm fetch-app-data

Build

pnpm build

The build runs, in order:

  1. fetch-app-data.mjs: app data (see above).
  2. generate-search-index.mjs: Orama search index, public/search-index.json.
  3. generate-sponsors.mjs: public/sponsors.json.
  4. generate-latest-posts.mjs: public/latest-posts.json.
  5. generate-feed.mjs: public/feed.xml and public/feed.json.
  6. next build: the static site, emitted to out/.

Lint

pnpm lint

Project layout

.
├── content/                  # Markdown sources
│   ├── posts/                # blog posts
│   ├── roadmap/              # roadmap initiatives
│   ├── seo/                  # landing-page copy
│   └── wiki/                 # wiki articles
├── plugins/
│   └── registry.json         # fetched, see "Data from the app repo"
├── public/                   # static assets (images, videos, schemas, robots.txt)
├── scripts/                  # fetch and build-time generators
├── src/
│   ├── app/                  # Next.js App Router routes, including og/ images
│   ├── components/           # layout, pages and ui components
│   ├── lib/                  # data loaders and helpers (blog, wiki, plugins, og, seo, ...)
│   └── styles/
├── CHANGELOG.md              # fetched from the app repo
├── next.config.ts
└── vercel.json               # build command and redirects

Contributing

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

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

Tip

Discord: Join our Discord server to talk with the maintainers and the community.

Acknowledgements

Special thanks to:

License

Apache License 2.0, same as the main Tabularis project.

Contributors

Languages