An easier workflow to update static websites on aleph.im

In order to facilitate the workflow of updating static websites on aleph.im from automated tools, following a discussion with @philogicae, we would like to achieve the following:

  1. A user can upload and pin a directory on IPFS using aleph-client, for example a static website. See code: aleph-docs/utils/publish-on-aleph.py at main · aleph-im/aleph-docs · GitHub

  2. A user can upload a directory and update the custom domain from a single command using aleph-client, instead of using two distinct commands.

    aleph site upload ./dist --domain my.example.com

  3. A user can add a GitHub action to his repository to upload a directory and update the custom domain. See aleph-docs/.github/workflows/actions.yaml at main · aleph-im/aleph-docs · GitHub

    Example:

    - name: Upload on aleph.im
      uses: aleph-im/actions-website@v1
      with:
        path: ./dist
        domain: my.example.com
        private_key: ${{ secrets.ALEPH_PRIVATE_KEY }}
    
  4. A bot from aleph.im creates a Pull Request on the user’s repository to suggest how to build and update their website by detecting the project’s build tool and adding the GitHub action above.

    The user provides the URL to their repository. The bot clones the repository, analyzes the build tool used (vite, mkdocs, …) and creates the GitHub Actions workflow, potentially using an LLM from Libertai.