Skip to content

Product Updates & Version Foundation

LaunchKit Pro includes a version and update foundation so buyers can show installed version, latest release, changelog notes, and future secure download integration — without exposing private ZIP files in the demo.

Canonical docs URLs:

Overview

TopicDefault behavior
Release catalogStatic backend catalog (releases.catalog.ts) — no database migration required
Installed versionLAUNCHKIT_VERSION env var (default 1.2.0)
Update checkUPDATE_CHECK_ENABLED=true compares installed vs latest catalog version
Secure downloadsDisableddownloadAvailable: false on all catalog entries
License gatingOptional — only when LICENSE_ENFORCEMENT_ENABLED=true
App accessNever blocked by missing updates or licenses (foundation only)

Buyer-friendly wording: Version and update foundation included — release notes, update status, and secure download integration placeholders.

Do not claim automatic marketplace updates or public demo ZIP downloads are fully integrated.

Environment variables

Add to backend .env (see .env.example):

env
LAUNCHKIT_VERSION=1.2.0
UPDATE_CHANNEL=stable
UPDATE_CHECK_ENABLED=true
UPDATE_PROVIDER=MOCK
UPDATE_SUPPORT_EMAIL=support@launchkitlabs.com
VariablePurpose
LAUNCHKIT_VERSIONInstalled product version shown in API + dashboard
UPDATE_CHANNELRelease channel label (default stable)
UPDATE_CHECK_ENABLEDWhen false, status messaging reflects disabled update checks
UPDATE_PROVIDERMOCK today; extend for Payhip, Gumroad, Lemon Squeezy, S3, R2, or private storage
UPDATE_SUPPORT_EMAILSupport contact on buyer updates page

API endpoints (authenticated)

MethodPathDescription
GET/updates/statusInstalled vs latest version, update availability, license/update access
GET/updates/releasesAll stable releases, newest first
GET/updates/releases/latestLatest stable release (static route — registered before :version)
GET/updates/releases/:versionOne release or friendly 404
GET/updates/releases/:version/downloadPlaceholder — returns 503 with demo message

Admin read-only catalog (platform admin):

MethodPathDescription
GET/admin/releasesSame catalog for admin review
GET/admin/releases/latestLatest stable release

Dashboard UI

PagePathPurpose
Product Updates/dashboard/updatesVersion status, latest release, changelog history, upgrade guidance
Settings → About/dashboard/settingsSmall LaunchKit Pro vX.Y.Z label + links
Sidebar footerDashboard layoutSubtle installed version label

Admin (optional read-only):

PagePath
Product Releases/admin/releases

Release catalog (v1)

Static entries included:

  • 1.2.0 — Editions, license foundation, admin license management, updates foundation
  • 1.1.0 — AI provider integration foundation
  • 1.0.0 — Initial release foundation

Each release includes version, title, date, summary, highlights, fixes, breaking changes, upgrade notes, optional docs URL, and download placeholders.

Secure downloads (intentionally disabled)

The demo does not serve private package ZIP files publicly.

  • Catalog entries set downloadAvailable: false
  • Download endpoint returns: "Secure downloads are not enabled in this demo."
  • Buyer UI shows a disabled Secure download not enabled in demo action

Connect your own flow later:

  • Marketplace delivery (Payhip, Gumroad, Lemon Squeezy)
  • Signed URLs from S3, R2, Cloudinary, or private storage
  • License-gated download tokens when enforcement is enabled

License + update access

When LICENSE_ENFORCEMENT_ENABLED=false (default):

  • Update page shows optional foundation messaging
  • Active license still displays update access active

When enforcement is enabled later:

  • Status can show license required if no active license
  • Active license shows update access active

See License Activation for key activation flows.

Customization for buyers

  1. Bump LAUNCHKIT_VERSION after each buyer deployment.
  2. Edit releases.catalog.ts or replace with DB/marketplace sync.
  3. Set UPDATE_PROVIDER and implement provider adapter for real download URLs.
  4. Enable signed download endpoint behind license checks — keep disabled until storage is configured.
  5. Link docs/changelog URLs per release (docsUrl field).

Manual test checklist

  1. Sign in → open /dashboard/updates
  2. Confirm installed + latest version visible
  3. Confirm release history lists v1.2.0, v1.1.0, v1.0.0
  4. Confirm download button is disabled / informational only
  5. /dashboard/license, billing, AI, and admin pages still work
  6. GET /updates/releases/bad-version → friendly 404
  7. GET /updates/releases/1.2.0/download → 503 demo message
  8. Admin → /admin/releases shows read-only catalog

curl examples

Replace TOKEN with a valid JWT:

bash
curl -s -H "Authorization: Bearer TOKEN" http://localhost:4000/updates/status | jq
curl -s -H "Authorization: Bearer TOKEN" http://localhost:4000/updates/releases/latest | jq
curl -s -H "Authorization: Bearer TOKEN" http://localhost:4000/updates/releases/1.2.0 | jq
curl -s -o /dev/null -w "%{http_code}\n" -H "Authorization: Bearer TOKEN" \
  http://localhost:4000/updates/releases/9.9.9
curl -s -H "Authorization: Bearer TOKEN" \
  http://localhost:4000/updates/releases/1.2.0/download

After backend build, optional catalog verification:

bash
npm run build
node scripts/verify-updates.mjs

LaunchKit Pro by LaunchKit Labs — buyer documentation. No secrets in this site.