Skip to content

[project-demos]: add Sliplane deploy flow from README button#388

Merged
rorychatt merged 8 commits intomainfrom
feat/update-sliplane-manage
Mar 5, 2026
Merged

[project-demos]: add Sliplane deploy flow from README button#388
rorychatt merged 8 commits intomainfrom
feat/update-sliplane-manage

Conversation

@ArtemLazarchuk
Copy link
Collaborator

Summary

  • Add a dedicated SliplaneDeployApp reachable at /sliplane-deploy-app for one‑click deployments from GitHub README buttons.
  • Capture ?repo= from the initial HTTP request and prefill the deploy form, remembering the last repository per user.
  • Add a documented SVG “Host your Ivy app on Sliplane” button to the README as a copy‑paste example.

Changes

  • Introduced SliplaneDeployApp that:

    • Uses Sliplane:ApiToken or OAuth session token.
    • Reads repository URL from DeployArgs or from a per‑user DeploymentDraftStore.
    • Opens the new DeployView with prefilled repo and derived service name.
  • Added DeploymentDraftStore:

    • Stores last repo URL in a static concurrent dictionary keyed by user token or anonymous cookie.
    • Uses IHttpContextAccessor and a dedicated sliplane-deploy-repo-key cookie for anonymous flows.
    • Registered as scoped service in Program.cs.
  • Added RepoCaptureFilter (IStartupFilter):

    • Intercepts initial GET /sliplane-deploy-app?repo=... before Ivy SPA strips query params.
    • Resolves DeploymentDraftStore from DI and saves decoded repo URL.
  • Implemented DeployView:

    • Card layout aligned TopCenter with structured form:
      • Server → Project → Service name → Repository URL → Branch, then build/network/optional settings.
      • Placeholders for all fields via [Display(Prompt = ...)].
    • Async selects for projects/servers, env variables section in Expandable, and new Volumes section in Expandable:
      • Loads server volumes on server change.
      • Allows adding/removing volume mounts with a dialog.
    • On successful deploy:
      • Sends SliplaneRefreshSignal("services").
      • Navigates type‑safely to SliplaneServicesApp.
  • Updated chrome configuration in Program.cs:

    • Default app set to SliplaneDeployApp.
    • Registered AddHttpContextAccessor, scoped DeploymentDraftStore, and singleton RepoCaptureFilter.
  • Updated SliplaneServicesApp:

    • Added explicit id: "sliplane-services-app" for stable navigation target.
  • Added SVG asset deploy-button.svg:

    • “Host your Ivy app on Sliplane” button with branded styling.
  • Updated README.md:

    • Documented “Deploy button for your repo” section.
    • Included ready‑to‑use HTML snippet:

Deploy button usage

This PR adds a reusable “Host your Ivy app on Sliplane” button that can be embedded into any GitHub README.

Example:

Host your Ivy app on Sliplane

Code:

<p align="center">
  <a href="https://YOUR-DEPLOY-APP-DOMAIN/sliplane-deploy-app?repo=https://github.com/OWNER/REPO">
    <img src="https://raw.githubusercontent.com/Ivy-Interactive/Ivy-Examples/main/project-demos/sliplane-manage/Assets/deploy-button.svg"
         alt="Host your Ivy app on Sliplane" />
  </a>
</p>

@ArtemLazarchuk ArtemLazarchuk requested a review from rorychatt March 5, 2026 11:25
@ArtemLazarchuk ArtemLazarchuk self-assigned this Mar 5, 2026
@rorychatt rorychatt merged commit ff57cdf into main Mar 5, 2026
79 checks passed
@rorychatt rorychatt deleted the feat/update-sliplane-manage branch March 5, 2026 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants