Akash Deploy UI Challenge (SpacePotato)

Hi everyone! In many livestreams I’ve attended, @gosuri describes his vision for the Akash deployment experience to be as frictionless as that of using Uniswap. Just as one can visit the Uniswap website, connect the wallet, select the swap amount, click a button, and be done, a developer should be able to visit a deployment website, connect the wallet, configure the SDL (or choose/modify a pre-configured one from a list/marketplace), click a button, and get back the deployment URL.

I want to bring us closer to this vision through the Sovrython Akash Deploy UI Challenge. More specifically, I’m interested in making this work entirely on the user’s web browser with the Keplr wallet.

My goals and proposed methodology (more research needed; somewhat hand-wavy for now):

  1. Create an AkashJS library, by building on top of CosmJS and reimplementing some of the CLI functionality in TS/JS (e.g. handling and creating certificates). My preliminary experiments so far are very promising :wink:. This general library would be useful for building out any Akash related UIs on the browser.
  2. Use AkashJS and Keplr API to build a “one-click” deployment website. Users should also be able to manage their deployments on the website (updating deployments, viewing logs, etc.). All transactions are to be signed locally by Keplr and broadcasted via AkashJS to an RPC endpoint. I still need to figure out how certificates would work, but the goal is to have the browser manage it after a one time setup by the client.
  3. If it all goes well and there’s time, or perhaps post-hackathon, add an open marketplace where anyone can submit SDLs, and anyone can search for and deploy those SDLs, right from the browser.

I welcome any comments and suggestions!

2 Likes

Hey!
i really like the idea and also started a project like this a few weeks ago. Had to stop because i don’t have enough time for it, but the main problem i ran in to is the certificate management. Querying transactions with cosmjs through keplr is no problem.
@baktun14 is also working on a similar project. I think he can give you some good insight into some issues you might face.
Good luck!

1 Like

The first self-contained Akash Deploy Website is here! Aside from requiring a Keplr wallet account with AKT in it, there is absolutely no installation or setup necessary. One can just visit the website and be able to click a few buttons to deploy (think Uniswap).

This website is made possible with an AkashJS library I wrote during the challenge, that replicates much of the command line functionality in JavaScript. I feel that AkashJS not only makes building deploy-to-Akash websites possible, but it also opens the possibility of integrating Akash with anything that can be built using JavaScript, such as browser extensions, VSCode extensions, GitHub actions, Electron Desktop applications, and more.

I’ve submitted the work on Gitcoin a few days ago, but the video link I had there is outdated. I’ve made a new recording showcasing more functionality:

Hosted website link: https://2g0cl9g6u0mn6vrbiajv5p9h508vbfq07j6fm060dl8lci85k436jh0.siasky.net/
AkashJS source
DeployUI source

The website has not been tested by the public, and so is most probably not bug free. I’m not liable for any damages or loss, whether direct or indirect, in any way related to the usage of this app. Please use at your own risk. That said, feel free to give it a go! If any step gets stuck, you’ll need to reload the page, close the deployment from the “My Deployments” tab, and start over.

Regarding hosting:
This app is currently not hosted on Akash unfortunately. There are two parts to this app: 1) the Front-End and 2) a Proxy server. I’ve detailed why a proxy server is necessary in my AkashJS GitHub. Both must be HTTPS enabled, as I also explained in the GitHub repo.

AFAIK, the only way I can enable HTTPS on an Akash deployment is to own a domain, and set up CloudFlare SSL with it. Let’s Encrypt may also be possible, but in both cases, a owning a domain is required. I don’t own any domain, and I haven’t found time to figure out how to get an HNS domain before the end of the hackathon. My solution for now is to host the front-end using SkyNet and the proxy server on Heroku, both of which provides me HTTPS. Happy to look into this more if this is well received.

2 Likes

Really impressive work! I’ll see if I can play with it later today.

1 Like

Wow awesome job! I would have loved to use something like your AkashJS library for my submission!

1 Like