# Building Decentralized Blogs on Swarm Using Etherjot: The Awesome-Swarm Registry Guide

> Build decentralized blogs on Swarm using Etherjot. Explore this UI framework, featured in the awesome-swarm registry, for your next dApp.

- Repository: [Ethersphere/awesome-swarm](https://github.com/ethersphere/awesome-swarm)
- Tags: tutorial
- Published: 2026-03-01

---

**Etherjot is listed under the UI section of the awesome-swarm repository as a front-end framework for building decentralized blogs on Swarm, discoverable through the project's machine-readable [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) catalogue.**

The [ethersphere/awesome-swarm](https://github.com/ethersphere/awesome-swarm) repository serves as the definitive, community-maintained index of open-source projects within the Swarm decentralized storage ecosystem. For developers building censorship-resistant publishing platforms, this registry provides a single entry point to locate frameworks like Etherjot alongside libraries, smart contracts, and CLI tools necessary for decentralized blog development.

## Understanding the Awesome-Swarm Repository Structure

The repository’s architecture centers on a single source of truth: the [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) file located at the repository root. This document organizes Swarm-related projects into discrete categories using ATX-style headings, enabling both human readers and parsing tools to navigate the ecosystem efficiently.

The master list is divided into the following sections:

| Section | Description | Source Location |
|---------|-------------|-----------------|
| **Services** | Core Swarm infrastructure including the Bee node client. | `README.md#services` |
| **Libraries** | Language-specific SDKs such as `bee-js` and `mantaray-js`. | `README.md#libraries` |
| **UI** | Front-end projects and dashboards including Etherjot for blog interfaces. | `README.md#ui` |
| **Tools** | Command-line utilities like `swarm-cli` and browser extensions. | `README.md#tools` |
| **Smart Contracts** | On-chain contracts for storage incentives and accounting. | `README.md#smart-contracts` |
| **Documentation** | Technical specifications and official papers. | `README.md#documentation` |

Each entry follows a strict, machine-parsable format defined in [`CONTRIBUTING.md`](https://github.com/ethersphere/awesome-swarm/blob/main/CONTRIBUTING.md):

```markdown
[Project-Name](https://github.com/owner/repo) – Short description, under 160 characters, sentence case.

```

## Locating Etherjot in the Swarm Ecosystem

Etherjot appears in the **UI section** of the awesome-swarm registry, categorized alongside other front-end interfaces like Bee Dashboard and Swarm Gateway. This placement identifies it as a client-side application layer tool specifically designed for content publishing workflows on Swarm.

To locate the framework manually:

1. Navigate to the `## UI` heading in [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md).

2. Identify the entry formatted as `[Etherjot](https://github.com/owner/etherjot) – Description text.`

The [`CONTRIBUTING.md`](https://github.com/ethersphere/awesome-swarm/blob/main/CONTRIBUTING.md) file enforces that all UI entries must represent free and open-source software with active maintenance, ensuring that frameworks listed for blog development meet baseline quality and licensing standards.

## Programmatically Discovering Swarm Blogging Tools

Developers building automated tooling or IDE integrations can extract the list of UI frameworks—including Etherjot—directly from the raw [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) file. The following Node.js example demonstrates how to fetch and parse the UI section using standard HTTP requests and regular expressions:

```javascript
// Fetch and parse the UI section to locate Etherjot
import fetch from 'node-fetch';

const url = 'https://raw.githubusercontent.com/ethersphere/awesome-swarm/master/README.md';

async function getUiProjects() {
  const response = await fetch(url);
  const readme = await response.text();

  // Capture the UI block from the markdown
  const uiBlock = readme.match(/## UI([\s\S]*?)(\n## |\n### |\n\Z)/);

  if (!uiBlock) return [];

  // Extract all markdown links from the section
  const projectLinks = [...uiBlock[1].matchAll(/\[([^\]]+)]\((https?:\/\/[^\)]+)\)/g)];
  return projectLinks.map(m => ({ name: m[1], url: m[2] }));
}

getUiProjects().then(console.log);

```

This returns an array of objects containing project names and URLs, allowing automated systems to resolve dependencies or generate documentation links for decentralized blogging stacks.

## Contributing to the Decentralized Blog Ecosystem

When building new tools for Swarm-based publishing, contributors can expand the registry by submitting pull requests that follow the established contribution workflow. The process ensures consistency across the curated list.

### CLI Workflow for New Entries

```bash

# 1. Fork the repository via GitHub web interface

# 2. Clone your fork locally

git clone https://github.com/<your-username>/awesome-swarm.git
cd awesome-swarm

# 3. Append a new library or UI tool under the appropriate section

#    (Strict adherence to CONTRIBUTING.md format is required)

echo "[NewBlogTool](https://github.com/example/newblogtool) - React components for Swarm-based blogs." >> README.md

# 4. Commit and push changes

git add README.md
git commit -m "Add NewBlogTool library"
git push origin master

# 5. Open a Pull Request against the upstream ethersphere/awesome-swarm repository

```

### Validating Entry Format Locally

Before submitting, verify that your entry complies with the formatting rules specified in [`CONTRIBUTING.md`](https://github.com/ethersphere/awesome-swarm/blob/main/CONTRIBUTING.md) using this bash validation script:

```bash

# Verify the entry follows the required pattern

NEW_LINE="[NewBlogTool](https://github.com/example/newblogtool) - React components for Swarm-based blogs."
if [[ $NEW_LINE =~ ^\[[^\]]+\]\(https?://github.com/[^)]+\)\ -\ .{1,160}$ ]]; then
  echo "Entry format OK"
else
  echo "Entry format INVALID"
fi

```

This regex ensures the project name, URL, and description length conform to the repository's machine-parsable standards.

## Rendering the Registry as Static Documentation

For developers building documentation sites or internal wikis that reference Swarm tooling, the awesome-swarm list can be converted to HTML while preserving its hierarchical structure.

```python
import markdown
import requests

url = "https://raw.githubusercontent.com/ethersphere/awesome-swarm/master/README.md"
md = requests.get(url).text

# Convert Markdown to HTML with table of contents support

html = markdown.markdown(md, extensions=['toc', 'fenced_code'])

with open("swarm-ecosystem.html", "w", encoding="utf-8") as f:
    f.write(html)

print("Static documentation generated: swarm-ecosystem.html")

```

The resulting HTML file maintains the section hierarchy—including the UI section containing Etherjot—and can be served as a standalone resource catalogue.

## Summary

- The **awesome-swarm** repository maintains the canonical index of Swarm ecosystem tools in its [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) file.
- **Etherjot** is categorized under the UI section as a front-end framework for decentralized blog development.
- Entry formatting is governed by **[`CONTRIBUTING.md`](https://github.com/ethersphere/awesome-swarm/blob/main/CONTRIBUTING.md)**, requiring specific link syntax and description length limits.
- Developers can **programmatically extract** tool listings using HTTP requests and regex parsing against the raw markdown.
- The repository accepts community contributions via standard GitHub pull request workflows with local validation support.

## Frequently Asked Questions

### Where is Etherjot listed within the awesome-swarm repository?

Etherjot is listed in the **UI section** of the [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) file, grouped with other front-end applications and dashboards that interface with the Swarm network. This categorization reflects its role as a client-side development framework for content publishing.

### How do I submit my own decentralized blogging tool to the list?

Submit a pull request that appends your project to the appropriate section (typically **UI** or **Libraries**) in [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md), following the exact format `[Name](URL) – Description.` defined in [`CONTRIBUTING.md`](https://github.com/ethersphere/awesome-swarm/blob/main/CONTRIBUTING.md). The description must be under 160 characters and use sentence case.

### Can I programmatically access the list of Swarm UI frameworks like Etherjot?

Yes. Fetch the raw [`README.md`](https://github.com/ethersphere/awesome-swarm/blob/main/README.md) from `https://raw.githubusercontent.com/ethersphere/awesome-swarm/master/README.md` and parse the `## UI` section using regex or a markdown parser. This allows automated tooling to discover blogging frameworks without manual repository browsing.

### What are the formatting requirements for new entries?

Entries must follow the pattern `[Project-Name](https://github.com/owner/repo) – Description text.` including the em-dash separator, a GitHub URL, and a description between 1-160 characters. The project must be free and open-source software to be accepted into the registry.