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.
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.