Webhash – A No-Code Decentralised Website Builder for ICP

Hello everyone :waving_hand:
We’re excited to share the progress on our project Webhash, which recently completed a key milestone through the DFINITY Developer Grant program. Webhash is a no-code website builder that lets users visually build and publish websites directly to the Internet Computer (ICP), without writing code, running a CLI, or managing infrastructure.

What is Webhash?

Webhash brings Web2-like simplicity to Web3 publishing. It allows creators, developers, and non-technical users to:

  • Design a static website using a drag-and-drop editor

  • Deploy it directly to an ICP canister with one click

  • Attach a custom domain using standard DNS (A record)

  • Serve the website over HTTPS, automatically

We built Webhash to reduce the technical barriers around deploying to ICP, especially for people who don’t want to deal with dfx, Wasm modules, or the domain registry flow.

What We Built With the Grant
Over the past few months, we used the Developer Grant to build the complete backend and infrastructure that powers our ICP integration. Here’s what was delivered:

1. ICP Deployment System

We implemented a fully programmatic deployment flow using @dfinity/agent. The backend handles:

  • Canister creation or reuse based on the deployment ID

  • Wasm module installation

  • Static asset upload (using chunked uploads)

  • Status tracking (IN_PROGRESS, FAILED, COMPLETED)

  • Automatic error recovery and logging

All the user sees is a “Publish” button — under the hood, a complete ICP deployment process is triggered with full reliability.

2. Custom Domain Support (with A Record Gateway)

One of the big UX challenges was custom domain attachment.

We initially explored ICP’s native domain registration flow (CNAME + TXT verification), but quickly ran into issues with apex domains. Many DNS providers don’t support CNAME at the root level.

So we built our own gateway system that works with A records:

  • User adds an A record pointing to our gateway IP

  • Gateway verifies DNS propagation

  • SSL certificate is automatically issued

  • Requests are securely proxied to the correct ICP canister

This makes domain attachment smooth and compatible with virtually all providers, no CNAME/TXT setup, no cert management, and it works with both root and subdomains.

3. Cycle Monitoring Infrastructure

To ensure site uptime, we built a system that:

  • Periodically checks canister cycle balances

  • Sends low-balance alerts to users

  • Supports manual top-ups via ICP wallet

  • Has infrastructure in place for automated top-ups (coming soon)

This makes Webhash more reliable for long-term hosting and removes the need for users to monitor cycle usage themselves.

How It Works

Here’s a simplified breakdown of the user flow:

  1. User builds a site visually using the Webhash editor

  2. On publish, Webhash provisions a canister and deploys the site to ICP

  3. User connects a custom domain via A record

  4. Webhash’s gateway validates DNS and issues SSL

  5. The website is now live at a secure, custom-branded URL, hosted on-chain

Key Features Delivered

  • No-code visual editor (drag & drop for static websites)

  • One-click deployment to Internet Computer

  • Programmatic canister lifecycle management

  • Custom domain mapping with DNS-based verification

  • Automatic SSL provisioning

  • Cycle monitoring and alerting system

  • Fully hosted Web2-like UX with decentralized backend

Status & Rollout

  • The system is live and fully functional

  • Currently in early access, onboarding select creators and projects

  • Working toward a public testnet version and broader launch


What’s Next

  • Adding support for ENS and other web3 domains

  • Tokenising the dwebsites & NFT-based site ownership

  • Improved editor blocks and site theming

  • Open-sourcing parts of the deployment SDK

12 Likes

cool stuff!

also sharing the demo video here :slight_smile:

2 Likes

maybe you want to talk to @icme regarding this :wink:

2 Likes

Nice project @hid :waving_hand:

One thought I had while reading of your project is that cycle topups might be too low of an abstraction for your users. Especially for site builder, maybe a monthly subscription is better for your users and for the business (also higher margin), and then you can handle the cycles behind the scenes yourself and/or use a b2b topup service like CycleOps.

4 Likes

We have implemented a background cron job monitors cycle usage across all deployed canisters:

  • Runs periodically to fetch canister balances (getCanisterStatus()).
  • If the balance falls below the threshold:
    • A top-up request is sent via topUpCanister().
    • Cycle states are logged before and after the operation.
  • Master wallet depletion triggers internal notifications and halts auto top-ups until replenished.
1 Like