Skip to main content

Internal product · Invite-only beta

Veynode

Veynode is a hosting platform built around a clear release boundary: connect a GitHub project, build a reviewable deployment, then publish it only when it is ready. The preview and production URL represent separate states in the product.

Project context: Veynode is a Soultware internal product in private beta, not a customer engagement. It has no production SLA, and this case study makes no claims about customer adoption or deployment results.
Veynode beta dashboard showing its workspace, site deployment status, and GitHub repository connection controls.
A site detail view in the Veynode beta control plane.
Product type
Internal hosting platform
Release path
Build → preview → publish → rollback
Source
Authorized GitHub repositories
Current stage
Invite-only private beta

Product challenge

A successful build and a live release are different decisions

Veynode is designed around the handoff between building a website and making that website live. A developer needs a way to inspect the exact output, share a review URL, and know which version currently receives production traffic.

When preview and publication are treated as one event, a build can become a release before anyone has checked it. Veynode gives those steps separate records and actions: a build creates a candidate, a deployment provides a reviewable preview, and an explicit publish operation changes the stable project route.

The same separation informs rollback. Returning to a previous version means selecting an already-ready deployment and changing the route, rather than rerunning old source and hoping the new build behaves identically.

Release workflow

Trace the source, inspect the preview, choose what goes live

The workflow is organized around a project and its deployment history. Each stage preserves enough state to show what was requested, what is ready for review, and which deployment is currently published.

  1. 01

    Connect an authorized repository

    A workspace owner or administrator connects GitHub and selects an authorized project repository. Organization roles and project access determine who can make deployment changes.

  2. 02

    Build a pinned source revision

    Veynode records the source commit for the build request. The build pipeline stages that source and runs supported build commands inside an isolated execution environment.

  3. 03

    Validate and prepare a preview

    Build output is checked and packaged as an immutable artifact. A ready deployment receives a review URL while the project’s currently published route stays unchanged.

  4. 04

    Publish deliberately or roll back

    An authorized user publishes a ready deployment to the stable project URL. If needed, rollback reactivates an earlier ready deployment without rebuilding its source.

Engineering

Keep ownership, build execution, and traffic control in separate boundaries

A hosting control plane handles credentials and deployment decisions while processing source code it does not own. The implementation separates those responsibilities and records the links between an authorized repository, a pinned revision, an artifact, and a deployed version.

Keep project ownership explicit

The control plane models organizations, members, roles, projects, repository links, builds, and deployments. Better Auth handles sessions; PostgreSQL with Drizzle stores product and deployment state. Authorization is checked against the organization and project context for each operation.

Treat repository code as untrusted input

Repository credentials are separated from build execution. The GitHub integration stages the authorized source revision; a separate build service runs supported commands inside a sandbox. Output paths, files, and manifests are validated before an artifact is accepted.

Make deployment artifacts immutable

The build result and deployment record retain their source provenance. Deployments move through explicit lifecycle states, and a ready deployment is not overwritten when a project is updated. This makes a preview traceable to the revision that produced it.

Separate preview from production routing

Cloudflare Workers for Platforms serve hosted projects and deployment-specific previews. Publishing updates the project’s live route as a separate action; rollback selects a previous ready deployment and changes routing without rerunning the build.

Why the boundaries matter

Repository contents can be arbitrary code, so the build step is treated differently from serving a finished site. The control plane records the request and its provenance; an isolated build process prepares an artifact; the serving layer receives validated output rather than running the original build command. Publication is another state change, not a side effect of compilation.

Project result

A working beta with a deliberate release model

The implemented product brings organization and project management, GitHub repository authorization, isolated builds, preview deployments, explicit publication, and rollback into one control plane. The product is currently invite-only and remains under active development.

This is evidence of an internal product build, not evidence of customer adoption or service reliability at scale. Veynode is not represented as production-ready and does not offer a production SLA.

Supported project inputs

  • Static HTML projects.
  • Client-side Vite projects.
  • Vite projects that emit the Cloudflare Vite Build Output v0 format with one default Worker and supported runtime configuration.

Outside the current beta scope

  • Customer-owned custom domains and automatic push-to-deploy triggers.
  • General Node.js server hosting, Docker, PHP, VPS, or database hosting.
  • Custom Worker bindings or outbound network access from hosted Workers.
  • A production service-level agreement or a claim that the private beta is production-ready.