Safe-CMS - Censorship is a thing of the past


@Shane, You are awesome! Thanks for everything you are doing!


Geez, you make the ground shake when you move! Are you always this productive or were you just overtaken by inspiration? Whatever the case, full steam ahead hammer head! You’re already establishing yourself as one the Giants here. :+1:


Fantastic work @Shane :slight_smile:

Content publishing applications like this are going to be crucial for adoption at launch. The libraries you are also building out are also going to support the development of other projects on the network as well. Really exciting to have this evolving so quickly, thanks for the great work!

Looking forward to the friendly and collaborative coopetition between you and @happybeing with safepress


Thanks all for the support. Another quick update with another code example for the new library:

I’ve now managed to get the DNS services working with public names, the example below is code using the new library to create a new public name “shanetesting” and a service within that “www” which when combined would be accessible through safe://www.shanetesting in the safe browser.

Obviously, you would never actually write the code above (since it deals with multiple concerns in the same function) - it was just a simple way to show how it could be used in as little code as possible :slight_smile:

This is a great milestone and means I’ve got about 33% of the functionality I need to build complete. Thanks to all of you for the kind words and support so far.


You should be working for MAID! Unless you are already are?


I don’t think we’ll be competing. SAFEpress was my attempt to get a bunch of people together to develop a first CMS for SAFEnetwork (because I knew it was beyond me at the time, and probably still). So I’ll keep on ploughing my furrow and will definitely help Shane and others wanting to build apps when I can.

I have plenty on my plate right now of course - though it is very interesting to find that (Solid) work has lead me to port a simple blog (solid-plume) and also to be working on a similar API to Shane at the same time. It’s amazing timing, and I think a great boost to the whole project here.


@Shane, just came across ToastUI a WYSIWYG markdown editor with some neat extensions. Thought it might be of interest for Safe-CMS (and of course many other App dev projects here):

Powerful Extensions

CommonMark and GFM are great, but we often face requirements beyond the specifications. The TOAST UI Editor comes with powerful Extensions in compliance with the Markdown syntax, while also providing APIs so you can develop your own extensions.

Here are some of the extensions you can start with:

    Color picker: ColorPicker provides an easy way to color text with a GUI tool box
    Chart code block: A Code block marked as a 'chart' will render charts
    UML code block: A Code block marked as an 'uml' will render UML diagrams
    Table merge: You can merge columns and rows in tables



You know, I’m really split on this. On the one hand, it would be great to have native support for markdown. On the other hand, I’m wary that some users will find this layout confusing (despite the preview section on the right.) and my goal is to build a really user friendly tool.

I might implement both the current WYSIWYG and this one and give users a choice in the admin (with Markdown being a secondary option instead of the default) , it wouldn’t be much work to do this. I’ll queue it up for release 2.0.0.

Thanks for mentioning this!


Hey all,

I’m Andy, a software engineer working with Shane as a consultant. I’m going to be working with @Shane on this (and other Safenet) projects going forward and just thought I would introduce myself here.

Thanks for reading


@frabrunelle the post above by @AndyAlban was flagged - it’s a legitimate post, he’s going to be working with me on this project.

edit: nevermind, thank you to (I assume) @draw for resolving this. :slight_smile:


Seems good.

But why is there any cost for EDIT/DELETE?

SAFE is capable of mutable data


Hi there! You’re quite right with regards to DELETE/EDIT requests - this post was originally made when I had a much lesser understanding of the SAFE network protocol - I’ll update it some time over the coming days.


my understanding of mutable data in Safe tells me that :

  • the owner or anyone granted enough rights can edit / delete an entry in a mutable
  • as both edit or delete are a mutation, either do cost some puts.

So yes Safe is mutable capable, but it has a cost for the publisher / editor

Keep that iron glowing, a precious sword for words is about to see the light !


Please note that there is definitely a “PUT” cost to modify/append/add/delete MD data as @nice said


Very promising project. Great job Shane!


Hey guys, it’s been a while since my last update - I’ve been working on a tonne of stuff to get this up and running. This week is just a bit of a teaser and an explanation about what I’ve been working on:

Above is the application (compiled as an app) in the state where it’s waiting for the user to authenticate through the Safe-Authenticater (the dots are animated, which is why it looks a little strange in a static image like this). It remains in this state until authentication is complete (or denied) and then renders the list of blog posts (or some information about why it failed and what the user should do)

As of right now, the following is all possible:

  • Creation of domains (public names) and services within those domains (multi-domain, multi-service)
  • The creation and uploading of a single post (no template, flat HTML) to a service
  • The automatic updating of a blog home page which lists all the posts.

Still left to do are as follows:

  • Creating the template to javascript compiler
  • Creating a few simple default templates
  • Letting posts be locally re-editable after they’ve already been uploaded
  • Allowing the user to defer the publishing of the blog home page so that they can batch release posts should they wish
  • Automatic (and optional) generation of sitemap.xml and robots.txt

The past week or so has mostly been myself butting heads against Electron, the SafeAPI and Node, trying to get everything to work together seamlessly. I’ve had issues with compiling the Safe Browser (mostly my own fault, I made an assumption that V6 - the second Alpha release - was stable, but it was neither stable, nor current, wasting a lot of time) and getting those dependencies to interact properly with my application.

The good news though, is that I’ve tested the current version of the CMS on Windows, OSX and Linux (only Ubuntu has been tested, but most common distros should be supported) and it’s working correctly on all of them.

As of right now, I’m still on track to deliver this project for the end of February, and while the last week or so has been intensely soul destroying (probably 50 hours plus spent debugging issues only to find out that most of the issues were minor configuration or version conflicts) I’m happy to be over the slump and the end is in sight.

I’ll be uploading a little hello world blog post to the SafeNet in the next two weeks generated entirely by the CMS, so watch out for that. The next development update will likely be on Saturday or Sunday and I’ll post a little screencapture video of the app in action.

Lastly, I just wanted to publicly say a massive and humble thank you to @hunterlester with whom I’ve exchanged almost 50 private messages during the course of this project, I really wouldn’t be anywhere near as far along without him and his help so far has been invaluable. @dirvine copying in here so you see the comment about Hunter’s work. :slight_smile:


Thanks for the progress report @Shane. Really looking forward to seeing the prototype in action. 50 hours bug fixing doesn’t sound like much fun! Do you think some clear instructions about which versions to use would help, or is it mostly an Electron /Node issue? - I remember seeing similar complaints elsewhere.


Thank you very much for these news, you are doing an amazing work with this project, and hitting exactly where , in my opininion, the Safe project needs !!
Can’t wait to try it live :slight_smile: I’d be glad to create a real blog about my own stuff using it.


just wanted to say i love your work :slight_smile: super-awesome to see this starting to fly =)


I think it’s mostly an architectural transition issue, most people coming here will have experience of building CLI only applications or websites, having to cater to the entire desktop application life-cycle comes with some complexities (inter-process communications, managing compiled dependencies, etc).

Developing on the SafeNet using NodeJS has a lot of variable dependencies (C++ compiler, Rust compiler, specific versions of NPM, maintaining version parity between the different SafeNet components) but again, most of this comea down to unfamiliarity with the toolchain.

It would be really easy to complain right now and say “the documentation needs to be better!” or “the FFI module should validate you’re building against the correct version!”, etc, but ultimately the truth is that building desktop applications which talk to alpha-stage third party services is hard, and it doesn’t really come down to Maidsafe to hold our hands through this process.

With all that being said, I do believe there needs to be some consolidation or simplification as SafeNet moves towards a true public release and the toolchain should be changed somewhat - and obviously, these are things I would like, not necessarily things Maidsafe should or has time to do:

  • The Rust core libraries should be re-implemented in Javascript for use with the Node toolchain, so that the only dependency for the NodeJS app library is a running version of the safe browser.
  • A CLI based authentication mechanism should be created so that CLI-only applications can be built (this may already exist, but I haven’t found it)
  • The RFCs are useful reading but don’t really reflect the current state of the application, Maidsafe should maintain a public documentation which covers the algorithms used in the current release version in a single place

Hopefully I didn’t ramble too much, it’s hard to make the context switch from hours of coding to coherently explaining topics like this in a way everyone can understand and participate with.