This site is both part of my personal web site, but also a sandbox to work through the type of blog/content management system that I kinda wish the web had evolved towards. It is based on some opinions I've developed over a few decades of content-focused tech work:
What that all boils down to is this site.
This is the first / worst iteration of it, and all anyone is seeing is the resulting words. There is a whole authoring environment that only runs on my PC to create those words and these pages.
At this point, having written this, it is good enough to be my personal blog. I am intending to work a but more on it to see if I can make the underlying app workable enough to publish. In the meantime, I have imported a few old blog posts and social media feeds to get a sense of how it works, and hopefully will remember to write more.
One word on the UI of the topic pages:
The choice to have centered dates and titles, with content split to either side is deliberate. I want the content to feel like a timeline in order to give the audience a sense of forward motion as you read. For blogs, you can see the author's thoughts evolve. For social media, you see things in the order they were presented. I can see this also working for history timelines, or even creative writing to share a story where the timing has focus. This won't work for all content, but I'm not trying to build something for all authors.
It does get a little wonky at times. It doesn't work well if you resize your browser. I'm OK with that. I'm still noodling the final form of all this.
This is not a complex piece of tech:
I have a local app written in Astro JS that I kick off from the command line on my PC. That gives me with a local web site where I can edit all the content. It looks fairly similar to the public site, but with all kinds of editing widgets added.
When I make changes, they are all written to .json files on my system via API calls. I then run the build process that Astro provides, and get a version of everything as static HTML, which I then upload to my repository on github, which publishes them to codingdave.com
That is it - no databases, nothing fancy, just a small pile of vanilla Javascript spaghetti.
In the future, I'm going to split the editing to a separate app, which will let me get rid of some redundant data from the HTML. Until I do so, the page sizes are twice as big as they need to be. Ah, well. We'll fix that in version 2.
5 Weeks ago, I said this was a simple little app. And it was....
But shortly thereafter, I realized that I was building an engine that not only could work for my needs, but could be a broader content authoring solution for a variety of people and organizations.
I've been writing content management apps since the 90s. I've done simple ones and complex ones. I've learned a lot about what works and what does not, and I have some ideas I've never had a chance to build out. I've also been working in tech long enough to know how to build a product, launch, it and maintain it.
While I was initially unsure if I wanted to keep working in tech after my last gig ended, I started thinking about better ways to acquire health care in the USA than taking a job just to get benefits. If I was willing to work some hours for someone else to get benefits, why not put those same hours into building something of my own? I don't even need it to be a huge success - if 4 hours a day of work on a product earns me enough to buy health insurance, I come out ahead of the game because my goal is met but I still have full autonomy over my working schedule and the actual work.
With all that in mind, I've greatly expanded the vision of what I am doing here. It is going to be a SaaS app. And I'm 90% of the way to a working MVP, so could launch it in the next couple weeks. But I'll probably launch closer to mid-late April. Why launch the minimum when a little more work would make it more valuable to my future authors? I've got time.
While I'm not ready to list out the full feature set yet, I will says that I'll be focused on a handful of driving principles as I build the app:
More to come when I'm closer to launching...