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
- What's on the site
- Data from the app repo
- Development
- Project layout
- Contributing
- Acknowledgements
- License
- 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.
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 |
.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_dispatchof typeapp-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.
Requires Node.js 20+ and pnpm (pinned via packageManager in package.json).
Setup
pnpm install
pnpm devThen open http://localhost:3000.
Refresh app data
pnpm fetch-app-dataBuild
pnpm buildThe build runs, in order:
fetch-app-data.mjs: app data (see above).generate-search-index.mjs: Orama search index,public/search-index.json.generate-sponsors.mjs:public/sponsors.json.generate-latest-posts.mjs:public/latest-posts.json.generate-feed.mjs:public/feed.xmlandpublic/feed.json.next build: the static site, emitted toout/.
Lint
pnpm lint.
├── 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
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/tabularisinstead.
Tip
Discord: Join our Discord server to talk with the maintainers and the community.
Special thanks to:
- @wajrock for designing and building tabularis.dev
- @Nako0 for creating the demo videos featured on the site
Apache License 2.0, same as the main Tabularis project.

