Skip to content

Landing and cloud pages ​

apps/landing is an optional static promo site. It builds into the web dist and the server serves it under /welcome. The default build ships only the promo page. The cloud edition adds pricing and legal pages for a hosted ReleaseDesk Cloud.

Routes ​

PathEditionSource
/welcome/allapps/landing/index.html
/welcome/pricing/cloudapps/landing/pricing/index.html
/welcome/legal/terms/, privacy, refund, dpacloudapps/landing/legal/*.md, rendered into legal/<slug>/index.html

The server also redirects the short paths /pricing, /terms, /privacy, /refund and /dpa to their /welcome/... page with a 301. The redirect only happens when the built page exists and the landing page is enabled.

Preview locally ​

bun run landing:dev

This starts Vite on http://localhost:5174. The dev base is /welcome, so open http://localhost:5174/welcome/. The dashboard dev server on :5173 does not serve these pages.

Pricing and legal pages exist only in the cloud edition. To preview them, start the dev server with RD_LANDING_EDITION=cloud.

Build ​

bun run build         # web build, then landing, then the server binary
bun run build:cloud   # same, with RD_LANDING_EDITION=cloud

The landing build writes to apps/web/dist/welcome and must run after the web build, which empties apps/web/dist.

Cloud edition ​

Setting RD_LANDING_EDITION=cloud adds the pricing and legal pages as build inputs. Self-hosted builds never contain a seller's legal identity.

Legal text is Markdown in apps/landing/legal/. A small built-in renderer supports headings, paragraphs, lists, tables, bold, inline code and links. Placeholders of the form are filled from RD_LEGAL_<NAME> environment variables at build time:

VariablePlaceholder
RD_LEGAL_LEGAL_NAME
RD_LEGAL_IE_ID_CODE
RD_LEGAL_ADDRESS
RD_LEGAL_SUPPORT_EMAIL
RD_LEGAL_PRIVACY_EMAIL
RD_LEGAL_DOMAIN
RD_LEGAL_HOSTING_PROVIDER

Any placeholder left unset stays in the output as literal text, and the build prints a warning listing the missing variables. Do not publish until it is clean.

Edition-specific markup ​

In any landing HTML file:

  • <!--include:header--> and <!--include:footer--> insert partials/header.html and partials/footer.html.
  • <!--cloud:x-->...<!--/cloud:x--> is kept only in cloud builds.
  • <!--default:x-->...<!--/default:x--> is kept only in self-host builds.

Runtime visibility ​

Two site settings control the promo page without a rebuild:

  • landingEnabled: when false, every /welcome path falls through to the dashboard's 404 page.
  • rootPath: when welcome (and the landing page is enabled), visitors without a session cookie are redirected from / to /welcome/ with a 302. Signed-in users keep the dashboard.

Search indexing ​

The server generates /sitemap.xml from the built documentation and landing pages, plus enabled public app download pages and visible releases. It omits the landing pages when landingEnabled is false. Verified custom download domains get their own sitemap containing the public page at / and its visible releases. Each host's /robots.txt points to its sitemap. bun run dev builds the static pages before starting the servers so they appear in the local sitemap too.

Set RD_BASE_URL to the public HTTPS origin on the deployed server, then submit https://your-domain/sitemap.xml in Google Search Console. A local setting such as http://localhost:3000 produces local URLs that Google cannot crawl. The sitemap updates automatically as public app pages and releases change and when a new build adds static pages.