Skip to content

Latest commit

 

History

History
98 lines (74 loc) · 5.04 KB

File metadata and controls

98 lines (74 loc) · 5.04 KB

Tabularium

Registry di plugin self-hosted. Costruito con Bun, Elysia, SvelteKit e Drizzle ORM.

🌐 Nella tua lingua: English · Deutsch · Español · Français · Italiano · 中文

📚 Documentazione: tabularium.wiki


Cos'è Tabularium?

Una directory di plugin (o di qualsiasi artefatto distribuito via release) con UI web, flusso di submission OAuth, superficie OpenAPI e CMS integrato. Gli autori collegano il loro account GitHub / GitLab / Gitea, scelgono un repo e Tabularium installa il webhook delle release — ogni nuovo tag diventa una release nel registry.

Caratteristiche

  • 🧩 Submission multi-provider — GitHub, GitLab, Gitea, Forgejo (qualsiasi istanza), con anteprima del manifest alla selezione del repo
  • 🔐 Release firmate — ogni release ingerita viene hashata (SHA-256) e firmata con la chiave Ed25519 del registry; JWKS su /.well-known/registry-key.json. Le attestation di build-provenance di GitHub vengono inoltrate quando presenti.
  • 📨 Richieste di plugin — gli utenti possono richiedere plugin, votarli e reclamarli su /requests (disattivabile)
  • 🔁 Trasferimenti di plugin — i proprietari possono trasferire la titolarità di un plugin tra account da /settings
  • 🌐 README multilingua — il campo readmes: del manifest mappa lingue a percorsi di README; il registry serve il README corrispondente via ?locale=
  • 📱 Handoff verso app desktop — gli operatori possono registrare schemi URL tipo tabularis://; la pagina di dettaglio del plugin mostra una CTA "Apri nell'app"
  • 🏷 Tipi di plugin — tassonomia definita dall'admin (temi, snippet, template SQL, …) con sottopagine pubbliche opt-in per tipo
  • 🪄 Wizard di installazione — form DB strutturato (host/porta/utente/password + test di connessione), password bootstrap nei log, login automatico in /admin dopo il riavvio
  • 📝 CMS integrato — pagine markdown con widget e traduzioni per lingua
  • 🎨 Branding — nome, colori, logo, favicon, analytics, policy di indicizzazione
  • 🌍 6 lingue — English, Deutsch, Español, Français, Italiano, 中文 — configurabile dall'admin
  • 🗄 Multi-dialetto — SQLite, Postgres o MySQL (auto-rilevato da DATABASE_URL)
  • 🚦 Feature toggle — disattiva submission o richieste senza redeploy
  • 🪵 Audit log — ogni azione admin con autore + IP + target

Avvio rapido

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

Apri http://localhost:5180 — il wizard ti guida nella configurazione del database, esegue le migration, semina le pagine CMS di default e promuove l'account bootstrap ad admin reale.

La password bootstrap viene stampata al primo avvio:

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

Stack

Layer Tech
Runtime Bun (≥ 1.3)
HTTP Elysia + TypeBox
DB Drizzle ORM — sqlite / postgres-js / mysql2
Cache Bun.redis (compatibile con Dragonfly) o in memoria
Frontend SvelteKit (SPA) + Eden Treaty tipi end-to-end
i18n Paraglide JS
Docs Docsify — nessuno step di build

Struttura

apps/
  backend/         API Elysia + wizard di installazione
  frontend/        SPA SvelteKit
packages/
  client/          @tabularium/client — client Eden Treaty tipizzato (TypeScript)
  manifest/        @tabularium/manifest — validatore puro + primitive di integrità (su npm)
  cli/             @tabularium/cli — `tabularium validate` lato autore (su npm)
  tabularium-rs/   tabularium-sdk — client Rust asincrono (su crates.io)
  tsconfig/        tsconfig condiviso
deploy/            manifest k3s (build dell'immagine in `.forgejo/workflows/docker-build.yml`)
docs/              contenuti Docsify (guide integrity, deploy, ecc.)
.forgejo/          Workflow Codeberg Forgejo Actions

Documentazione

Docs completi su tabularium.wiki.

Licenza

Apache 2.0 — vedi LICENSE.

Contribuire

Issue e PR benvenute su Codeberg. Per modifiche grandi, apri prima una discussion.