Skip to content

Latest commit

 

History

History
98 lines (74 loc) · 5.1 KB

File metadata and controls

98 lines (74 loc) · 5.1 KB

Tabularium

Self-hosted Plugin-Registry. Gebaut mit Bun, Elysia, SvelteKit und Drizzle ORM.

🌐 In deiner Sprache: English · Deutsch · Español · Français · Italiano · 中文

📚 Docs: tabularium.wiki


Was ist Tabularium?

Ein Verzeichnis für Plugins (oder beliebige Release-Artefakte) mit Web-UI, OAuth-Submission-Flow, OpenAPI-Schnittstelle und integriertem CMS. Autor:innen verbinden ihren GitHub-/GitLab-/Gitea-Account, wählen ein Repo aus, und Tabularium installiert den Release-Webhook — jeder neue Tag wird automatisch zum Release im Verzeichnis.

Features

  • 🧩 Multi-Provider-Submission — GitHub, GitLab, Gitea, Forgejo (beliebige Instanzen), mit Manifest-Vorschau bei der Repo-Auswahl
  • 🔐 Signierte Releases — jedes eingelesene Release wird gehasht (SHA-256) und mit dem Ed25519-Schlüssel der Registry signiert; JWKS unter /.well-known/registry-key.json. GitHub-Build-Provenance-Attestations werden weitergereicht, sofern vorhanden.
  • 📨 Plugin-Requests — Nutzer:innen können Plugins anfragen, upvoten und unter /requests für sich beanspruchen (abschaltbar)
  • 🔁 Plugin-Transfers — Owner können Plugin-Eigentum unter /settings zwischen Accounts übertragen
  • 🌐 Mehrsprachige READMEs — das Manifest-Feld readmes: mappt Locales auf README-Pfade; die Registry liefert das passende README via ?locale=
  • 📱 Desktop-App-Handoff — Betreiber:innen können tabularis://-artige URL-Schemes registrieren; die Plugin-Detailseite zeigt einen „In App öffnen"-CTA
  • 🏷 Plugin-Arten — admin-definierte Taxonomie (Themes, Snippets, SQL-Templates, …) mit optionalen öffentlichen Katalog-Unterseiten pro Art
  • 🪄 Install-Wizard — strukturiertes DB-Formular (Host/Port/User/PW + Test-Connection), Bootstrap-Passwort im Log, nach dem Restart automatischer Login in /admin
  • 📝 Integriertes CMS — Markdown-Seiten mit Widgets, Übersetzungen pro Sprache
  • 🎨 Branding — Name, Farben, Logo, Favicon, Analytics, Indexierungs-Policy
  • 🌍 6 UI-Sprachen — English, Deutsch, Español, Français, Italiano, 中文 — vom Admin konfigurierbar
  • 🗄 Multi-Dialekt — SQLite, Postgres oder MySQL (auto-erkannt aus DATABASE_URL)
  • 🚦 Feature-Toggles — Submissions oder Requests ohne Redeploy abschalten
  • 🪵 Audit-Log — jede Admin-Aktion mit Akteur + IP + Ziel

Schnellstart

git clone https://codeberg.org/NewtTheWolf/Tabularium
cd Tabularium
bun install
just dev   # startet minikube + tilt up (postgres + dragonfly + api + frontend)

Öffne http://localhost:5180 — der Wizard führt durch die Datenbankeinrichtung, lässt Migrations laufen, seedet Default-CMS-Seiten und befördert den Bootstrap-Account zum echten Admin.

Das Bootstrap-Passwort steht im Startlog:

==========================================
 Tabularium install wizard
 → http://localhost:3000/welcome
 Bootstrap login:
   admin@example.com
   <auto-generated-password>
==========================================

Stack

Schicht Tech
Runtime Bun (≥ 1.3)
HTTP Elysia + TypeBox
DB Drizzle ORM — sqlite / postgres-js / mysql2
Cache Bun.redis (Dragonfly-kompatibel) oder in-memory
Frontend SvelteKit (SPA) + Eden Treaty end-to-end Typsicherheit
i18n Paraglide JS
Docs Docsify — kein Build-Step

Projektstruktur

apps/
  backend/         Elysia API + Install-Wizard
  frontend/        SvelteKit SPA
packages/
  client/          @tabularium/client — typisierter Eden-Treaty-Client (TypeScript)
  manifest/        @tabularium/manifest — reiner Validator + Integrity-Primitives (auf npm)
  cli/             @tabularium/cli — autorenseitiges `tabularium validate` (auf npm)
  tabularium-rs/   tabularium-sdk — Async-Rust-Client (auf crates.io)
  tsconfig/        Shared tsconfig
deploy/            k3s-Manifests (Image-Build läuft in `.forgejo/workflows/docker-build.yml`)
docs/              Docsify-Inhalte (Integrity-Guides, Deploy, etc.)
.forgejo/          Codeberg-Forgejo-Actions-Workflows

Dokumentation

Vollständige Docs unter tabularium.wiki.

Lizenz

Apache 2.0 — siehe LICENSE.

Mitwirken

Issues und PRs willkommen auf Codeberg. Für größere Änderungen vorab eine Discussion starten, damit wir uns auf eine Richtung einigen.