Registro de plugins auto-hospedado. Construido con Bun, Elysia, SvelteKit y Drizzle ORM.
🌐 En tu idioma: English · Deutsch · Español · Français · Italiano · 中文
📚 Documentación: tabularium.wiki
Un directorio de plugins (o cualquier artefacto que se publique por releases) con UI web, flujo de envío vía OAuth, superficie OpenAPI y CMS integrado. Las autoras conectan su cuenta de GitHub / GitLab / Gitea, eligen un repo y Tabularium instala el webhook de releases automáticamente — cada tag nuevo se convierte en una release en el registro.
- 🧩 Envío multi-proveedor — GitHub, GitLab, Gitea, Forgejo (cualquier instancia), con previsualización del manifest al elegir repo
- 🔐 Releases firmadas — cada release ingerida se hashea (SHA-256) y se firma con la clave Ed25519 del registro; JWKS en
/.well-known/registry-key.json. Las attestations de build-provenance de GitHub se reenvían cuando están presentes. - 📨 Solicitudes de plugin — las personas usuarias pueden pedir plugins, votarlos y reclamarlos en
/requests(desactivable) - 🔁 Transferencias de plugin — los propietarios pueden transferir la titularidad entre cuentas desde
/settings - 🌐 READMEs multi-idioma — el campo
readmes:del manifest mapea idiomas a rutas de README; el registro sirve el README correspondiente vía?locale= - 📱 Handoff a app de escritorio — los operadores pueden registrar esquemas URL tipo
tabularis://; la página de detalle del plugin muestra un CTA "Abrir en la app" - 🏷 Tipos de plugin — taxonomía definida por el admin (temas, snippets, plantillas SQL, …) con subpáginas públicas opcionales por tipo
- 🪄 Asistente de instalación — formulario estructurado de BD (host/puerto/usuario/contraseña + probar conexión), contraseña bootstrap impresa en el log, autologin en
/admintras el reinicio - 📝 CMS integrado — páginas markdown con widgets y traducciones por idioma
- 🎨 Branding — nombre, colores, logo, favicon, analítica, política de indexado
- 🌍 6 idiomas — English, Deutsch, Español, Français, Italiano, 中文 — configurable por admin
- 🗄 Multi-dialecto — SQLite, Postgres o MySQL (auto-detectado vía
DATABASE_URL) - 🚦 Conmutadores de features — desactivar envíos o solicitudes sin redeploy
- 🪵 Audit log — cada acción admin con actor + IP + objetivo
git clone https://codeberg.org/NewtTheWolf/Tabularium
cd Tabularium
bun install
just dev # arranca minikube + tilt up (postgres + dragonfly + api + frontend)Abre http://localhost:5180 — el asistente te guía por la configuración de la base de datos, ejecuta las migraciones, siembra páginas CMS por defecto y promueve la cuenta bootstrap a admin real.
La contraseña bootstrap se imprime al primer arranque:
==========================================
Tabularium install wizard
→ http://localhost:3000/welcome
Bootstrap login:
admin@example.com
<contraseña-auto-generada>
==========================================| Capa | Tech |
|---|---|
| Runtime | Bun (≥ 1.3) |
| HTTP | Elysia + TypeBox |
| DB | Drizzle ORM — sqlite / postgres-js / mysql2 |
| Caché | Bun.redis (compatible con Dragonfly) o en memoria |
| Frontend | SvelteKit (SPA) + Eden Treaty tipos end-to-end |
| i18n | Paraglide JS |
| Docs | Docsify — sin paso de build |
apps/
backend/ API Elysia + asistente de instalación
frontend/ SPA SvelteKit
packages/
client/ @tabularium/client — cliente Eden Treaty tipado (TypeScript)
manifest/ @tabularium/manifest — validador puro + primitivas de integridad (en npm)
cli/ @tabularium/cli — `tabularium validate` para autores (en npm)
tabularium-rs/ tabularium-sdk — cliente Rust asíncrono (en crates.io)
tsconfig/ tsconfig compartido
deploy/ manifests k3s (build de imagen en `.forgejo/workflows/docker-build.yml`)
docs/ contenido Docsify (guías de integridad, despliegue, etc.)
.forgejo/ Workflows de Codeberg Forgejo ActionsDocs completos en tabularium.wiki.
- 🚀 Guía de despliegue — Docker, variables, reverse proxy
- 🛠 Internals del wizard
- 🔌 Referencia API — spec OpenAPI en
/openapi/json
Apache 2.0 — ver LICENSE.
Issues y PRs bienvenidos en Codeberg. Para cambios grandes, abre una discusión antes para alinear dirección.