Worldcloud DevOps for the IC - Hosting frontend web applications on the IC

1- Project Highlights

Worldcloud serves as a managed cloud services platform for hosting frontend web applications on the Internet Computer. It is tailor made for frontend developers and technical organisations who require a platform where they can easily build and distribute their frontend service.

Developers can work with a flow familiar to them, such as Vercel or Microsoft Azure’s CI/CD pipeline setup, to easily build and host their web application from a source Github repository.

2- Web3 Advantages

There are few competitors in the area of managed cloud services, notably Juno, and the lesser known product “4EVERLAND”.

Juno comparison

Worldcloud stands out among its competitors for its plug-and-play functionality, where publishing a site only requires the developer to connect their Github and simply select the branch containing the source code. In comparison to bootstrapping your application with the required juno libraries, developers are not required to perform any kind of further configuration when deploying their code.

4EVERLAND comparison

Worldcloud utilizes asset canisters to serve your frontend application static content. 4Everland on the other hand, serves your content from IPFS or Arweave storage. This design is quite redundant since asset canisters are already designed for storage and can perfectly serve the purpose when using the IC management canister’s methods to create, write or delete from an asset’s storage.

3- How Its Made

Backend

The project’s backend is written in motoko, and uses various of the tools available on the IC such as the IC management canister,asset canisters, ICP ledger canister, IC domain registration service, and some third party services such as Github for workflow management and Cloudflare for DNS records management.

Frontend

The client-side application is built with the ReactJS framework and utilizes the internet identity canister for registration and authentication. The client also supports registration with the internet identity 2.0 host such that users can register accounts using Google, Facebook or Apple.

Technical Diagrams

Building and Deploying Web Applications

The process of publishing a frontend application is as follows:

  • Create a project and get a new asset canister
  • Connect Github and select source branch to publish site from
  • Github Actions build project
  • Artifacts uploaded to the asset canister and static content is served from .icp0.io

Registering Subdomain

Instead of visiting the site from <canister-id>.ic0.io, users can opt for registering a subdomain on the Worldcloud domain name such as my-site.worldcloud.app.

The roadmap includes a milestone for allowing users to bring their own nameservers and link a custom apex domain name.

Registration Process is as follows:

  • After publishing a site, users choose an available subdomain and submit
  • The backend canister creates the required DNS records
  • The backend registers the domain name with the IC boundary nodes
  • Website is served from my-site.worldcloud.app

4- Internet Computer Infrastructure

Worldcloud is made possible with the use of the Internet Computer’s infrastructure, specifically the ability to run WASM code on canisters, which gave rise to the programmability of asset canisters.

The main features of the IC used in Worldcloud:

  • IC management canister and asset canisters
  • Canister HTTP Outcalls
  • Internet Identity

5- Go-to-Market Strategy

The main strategy to start attracting users is to advertise the freemium plan which allows users to get a hands-on experience of how websites are deployed to the IC using Worldcloud.

Another facet is granting premium subscriptions to high profile community allowing them to get access to Worldcloud for free and to showcase the process to their follower base.

6- Monetization

The project is starting as a for-profit business and closed source, with potential plans for decentralising governance through the SNS and open sourcing the code.

The main revenue stream is the subscription based plans which allow users to create a limited number of canisters (projects with canisters attached).

Another revenue stream is the add-on services which are additional services related to the project such as domain registration, or any other potential future add-on type.

Visit pricing for more information.

7-Current Status

Worldcloud is currently operational and accepting requests for testing from developers and the community. Visit the site here.

Currently, the following features are available:

  • Freemium projects: Attach a free asset canister to your project for a limited amount of time (currently 4hrs, 3 times per day). Publish your frontend application using the Github Actions flow and access the site with a Worldcloud branded domain
  • Premium plans: Select the plan that fits your needs starting from 1 project up to 25 projects per subscription, and deploy your sites using the Github Actions flow.
  • Custom domains: Purchase an add-on and register your project’s site with a Worldcloud branded domain such as my-brand.worldcloud.app

8- Resources

9- Roadmap and Future Plans

The following outlines the completed milestones and the current tentative roadmap for developing the next features:

Integrate Github Actions to handle build process

Create Subscription plans to manage user activity and access

Freemium Model and Seamless Cycles Management

Custom Domains and Web2 Auth

Publish to private domains with user’s nameservers

Automatically detect pushes to branches and trigger workflow run for redeploying application

Encrypted File Storage

Unity Application Hosting

2 Likes

thanks for sharing, @georgiod9 :slight_smile:

please consider adding this also here → 📢 Call for Ecosystem Updates – Developer Newsletter #6

Congrats for the launch! Really cool to see you’ve already thought about freemium plans, and your roadmap sounds great, particularly Unity :+1:.

Out of curiosity, if I may ask, how are you connecting a GitHub repo/account to your canister? Last time I checked, OAuth2 seemed like the only, and since it required using an access token on the backend, I decided not to move forward with deeper GitHub integration in Juno due to security concerns.

Currently using a nodejs backend for managing Github secrets. There are plans to migrate the GitHub rest api integration to the Motoko canister. Yes, there are security concerns. Users should be aware of what repos the keys have access to

Indeed, that lead to some security and ownership questions. If you ever find a way to interact with GitHub using a canister while addressing those, I’d be really curious to hear about it.

Thanks for the feedback, appreciate it. Best of luck with your future plans!