Issue 1

Starting Out

My approach is to create a component based authoring system. As a first pass on this idea, I am thinking of compiling an HTML document as a unified document formed from a tree of WebComponents.

This idea could need much more refinement once ideas like versioning of components and multi user collaboration on component authoring are brought into the system. But at the moment, I’m looking at doing a single user, single version component system to create websites instantly. I am laying out a barebones hypothesis here and build just enough to see it works out.

So my initial idea is, you create a /components library where you put in all the components and then just look them up by their name. This will then generate a dependency graph depending on how components are related to one another. Wonder if it would be the requisite variety of parameters needed that as I get into the thick of the things.

A good reference for weaving together a component dependency graph is Bostock’s article on ObservableHQ's internals.

Component graph

An immediate question on my mind is the kind of entities that are needed in this system. There needs to be components acting as the fundamental building block. Then, there will be views associated with them. A view can have metadata associated with it which is a context such as a background, dimensions, etc. and a project view which is a collection of such views. So the current entity taxonomy of the system looks like this:

  • Component
  • View / Context
  • Project

The initial client I chose to write this in is Neutralino. I liked the low amount disk space it takes, but tinkering on it for a good while on my macOS's version unearthed a few errors which were show stoppers when compiling it. I am thinking of possibly returning to it at a later time and going ahead with Electron for now.

For the very first version of this software, I'll just focus on instant deployment of fast websites. Here's a start to logging the journey to see if I'll be able to orchestrate all the things to work in concert to build this tool.