VITNI

DEPLOYMENT · SELF-HOSTING STATUS

A self-hosted path, with its current status in view.

Vitni is designed for a hosted service and self-hosted installations. The repository has a local development stack today; a production-ready self-hosting release still needs operator tooling and deployment hardening.

01 / VITNI

The current stack

The product foundation uses a Nuxt web app, a NestJS API, PostgreSQL with row-level tenant isolation, and standards-based OIDC. Docker Compose starts the local development dependencies with Keycloak and Mailpit; hosted prelaunch uses ZITADEL, Cloudflare Workers, Render, Neon, and Resend.

Organizations use the web workspace to manage an issuer, achievements, memberships, credentials, and pathways. Public credential and issuer documents are served by the application for recipients and verifiers.

  • Nuxt web application
  • NestJS API and scheduled email worker
  • PostgreSQL database with a transactional email outbox
  • Keycloak OIDC for local development; ZITADEL for hosted prelaunch

02 / VITNI

What you can run locally

The repository includes setup commands and Docker Compose services for local development. The developer guide explains how to prepare the environment and work on the application.

Local defaults, sample secrets, ports, identity-provider settings, and test mail configuration are intended for development. They are not production deployment instructions.

03 / VITNI

What remains before production self-hosting

Vitni does not yet provide the approved guided operator setup, a supported upgrade path, production identity-provider guidance, or platform-operator administration. Backup and restore, operational metrics, secure key custody and recovery, and a security review also remain before a production self-hosting release.

The production hosted SaaS infrastructure and managed signing-key provider have not been selected. The Community edition is planned as a useful self-hostable product, but the license and contribution terms are still undecided.

START WITH THE FORMAT

See what a verifier can check.

Open the public verifier