NoNo (No JavaScript, No Data) is a tongue in cheek reference to encapsulate some of the desires and lessons learne from the development of Greenwood so far. Greenwood is a static site generator supporting web component based development for any type of application, be it blog, portfolio, or full blown Single Page Application.
Over the course of Greenwood's development, a few high level ideas, concepts, and goals have emerged through our learning of the problem space as well as observing other solutions in the space like Sapper and vite / vitepress and Snowpack.
This combined with recent progress, and challenges / oppourtunities in Greenwood...
Have led to a bottom up re-thinking of how to approach the project. Namely, questioning if tools like webpack should own the whole pipeline, and instead aim for an ondemand local development workflow, with a lean and custom production optimization pipeline, enabling build strategies like strict
, spa
, and progressive
, but from "scratch".
Greenwood should be usable by anyone familiar with HTML / CSS / JS, and additionally, markdown. With this, the framework will support building a modern site or app for the web. It will be great for blogs, portfolios, SPAs, and more! This POC aims to ensure that this is experience can be gauranteed / supported / documented.
Goals of this POC are as follows:
- Appeal to developers of all skill levels with a project that scales as skills / needs scale.
- Web Platform first, starting from the ground up using HTML, CSS, JS.
- Less reliance on abstractions owning the whole tool chain (e.g. webpack) and more of a hands on approach gluing some lower level tools together (Koa, Rollup).
- Use this as a grounding oppourtunity for the Greenwood project and its long term ambitions overall.
- Look for slimmer / leaner alternatives to lit-redux-router and Apollo and dependencies in general.
- Go ESM first, with tools like Rollup.
- Look at the platform first, like using
import maps
. - Own as much of the means of production, including creating custom Babel plugins or direct AST transforms
- Faster development times
- More pluggable (server as own package, data as own package, spa, etc)
- Make things more component based and closer to HTML where possible
- Get clarity on exactly what a 1.0.0 would look like after all is said and done