Documentation/architecture-and-privacy

How it Works

Releaseboard is designed with simplicity, speed, and privacy in mind. We believe your infrastructure data should remain yours. Here is an overview of the technology and our data privacy guarantees.

Data Privacy & Security

We do not send your data anywhere. Releaseboard acts as a direct conduit between your Git providers (GitHub, GitLab, Bitbucket, Gitea) and the users viewing the changelog.

  • No Telemetry: There is absolutely no third-party tracking, analytics, or phone-home telemetry.
  • Local SQLite Storage: Source configurations, credentials, and API response caches are stored entirely within a local SQLite database (changelog.db) on your server.
  • Direct Proxying:We fetch release data directly from your configured repositories on demand (with a short cache window) and render it server-side. The data only travels from your Git provider → your Releaseboard server → your user's browser.

Technology Stack

  • Next.js 15 (App Router): The core framework powering both the frontend and backend API capabilities. We utilize React Server Components for heavy lifting to ship virtually zero JavaScript to the client.
  • Better-SQLite3:A fast, synchronous SQLite driver for Node.js. Used to store your configured sources and provide a local caching layer so we don't hit rate limits on your Git providers.
  • Vanilla CSS & CSS Variables: We bypass heavy styling libraries in favor of a lean, performant CSS architecture utilizing modern variables and native media queries for our dark-mode glassmorphism aesthetic.
  • Docker: Containerized for immediate deployment on any platform utilizing a multi-stage Alpine Node build to keep the image size minimal.

Release Inference

Releaseboard supports aggregating standardized releases and tags. But what about repositories that don't use formal releases?

We built a Commit Fallbackengine. If a repository has zero formal releases, the engine automatically falls back to querying the commit history of the main branch. It seamlessly infers the updates by parsing the commit messages, so your changelog always has content, regardless of the repository's CI/CD maturity.