Welcome to V0.0.0
Exploring the first iteration of Krondor.org - an experimental distributed CMS built with smart contracts, IPFS, and NextJS that makes content publicly verifiable and truly decentralized.

The Zeroeth Iteration
Welcome to the zeroeth iteration of Krondor.org! This site represents my attempt to figure out what I'd want from a distributed, publicly verifiable Content Management System (CMS). It's an experimental playground where I'm working through ideas about backend ownership, data formats, and content viewers.
I chose to implement a blog as the first example since blogs seem like a natural use case for CMSs. Plus, it gives me a place to publish my thoughts and ideas on other projects and interests. You can see the current results of this process right here on this very site!
If you want to see the work that goes into making this site, you can check out its repository: https://github.com/amiller68/krondor.
System Architecture
Krondor is comprised of three main components that work together to create a truly distributed content management experience:
Contracts - A single smart contract that points to the latest version of the blog and is owned by the deployer (me!). This creates an immutable pointer to the current content.
CLI - A command line interface for interacting with the blog contract and IPFS, handling the deployment and updating of blog content.
Frontend - A NextJS application that serves as the blog frontend (which you're using right now), consuming markdown files from IPFS by following the pointer in the smart contract.
Why Build This?
By combining smart contracts with IPFS, this blog format achieves some fascinating properties that traditional CMSs simply can't offer:
Publicly Verifiable - All content is pointed to by an owned contract that I control, and the content itself is identified by a hash. This allows others to verify that the content on this site is correct and published by yours truly.
Truly Distributed - All services are distributed (other than the frontend), so I don't have to rely on any one piece of infrastructure or provider to host it! No single point of failure here.
Versioned Content - All current posts are pointed at by a single CID, allowing me to update the content of my blog without changing its frontend views. This is incredibly handy since I'm managing all of this myself!
It's a blog framework that's fun to work with, uses cool technologies, and is (relatively) easy to use! 😅
The CMS Workflow
Content is managed by the CLI tool that implements a very basic CMS. The workflow is surprisingly straightforward and gives you complete control over the publishing process.
Getting Started
First, you initialize a new directory for blog content:
yarn cli --prod init
This creates two important files:
Manifest File - Tracks what posts are included in the most recent version of the blog, along with metadata like titles and timestamps.
History File - Points to the previous version of the blog by its content's CID, allowing you to walk back through the blog's entire history.
Creating Content
Adding a new post is as simple as:
yarn cli --prod add v0.0.0 "Welcome to KrondorV0!"
This creates a new markdown file with a timestamp header. You edit the content directly, then update the manifest:
yarn cli --prod update my-first-post
Publishing to the Distributed Web
The magic happens when you publish:
yarn cli --prod publish
This walks you through publishing the workspace to IPFS and updating the smart contract pointer. You get full transparency into gas costs and can verify the transaction on Etherscan. It's a beautiful blend of traditional content management with cutting-edge decentralized infrastructure.
What's Next
This project is still at a very early stage, but I'm excited about the possibilities! Here are some features I hope to add soon:
Quality of life improvements: easy configuration, upgradable contracts, better project structure
Distributed frontend hosting over IPFS
Asymmetric key authentication for commenting on posts
Replication to Filecoin for long-term storage
Private blog access for special users
Photo sharing capabilities
Creative feeds for showcasing content in new ways
If you have ideas for making this project better, want help deploying or developing on top of it, or just think this stuff is cool, please reach out! You can find my contact information on the about page.
Thanks for bearing with me on this experimental journey into distributed content management. This same workflow brought you this very post, and hopefully many others to come! 🎉