A minor update for update's sake.
Reminder: we're building tools to build tools to build people - open source foundations for modern ed-tech, skill development, and knowledge sharing.
In the prior post I described the next steps as teasing apart the existing monolithic codebase into modular components. My optimistic one-week estimate turned into about two weeks of work, with a family vacation besides.
but...
I'm happy to report that the big ball of mud has been separated into several smaller balls of mud, some of which are taking on vague semblances of their intended forms.
Not quite castles, but a charitable eye can make out some spires.
In software, a ball-of-mud is a program whose components are tightly intertwined with one another. This project ended up that way because of its history as a long-running personal side project.
Pulling the functionality apart makes it easier to:
The monorepo now has a number of packages that handle specific domains:
common
- some core logic and shared standards for communication between different packages and system servicescommon-ui
- implementations of UI components, including the main learner's loopdb
- all things persistance. Course content, user data, etc.courses
- abstract base classes and components to be extended into general course materials.The boundaries between these packages provide decently clean lines for abstraction and the creation of different implementations for different purposes. In particular, the existing db
implementation is based on a relationship between pouchdb
in the browser and couchdb
on the server, but shortly I'll add a side-by-side implementation for statically built courses and browser-local user data storage.
Most exciting is the brand new standalone-ui
package, which is the templating basis for the (work-in-progress) project scaffolding CLI.
The project scaffolding CLI is the major immediate focus.
Combining the CLI with the local-first + static site database implementation, I hope over the next couple of weeks to have both:
Looking forward to exposing the project in a way that can garner real feedback.
Bricks are just mud and a little sunlight, right?
As always, happy to hear from people either via the contact form or via the GitHub Org or repository.