Dropserver Progress - March 2025
This is the progress report for Dropserver for March 2025. The previous report is here.
Dropserver.org Docs Pages and Modern CSS
I spent some time at the beginning of the month making the Docs pages of Dropserver.org easier to use. In particular I wanted to have the navigation in the sidebar instead of a separate page, this makes casually browsing the docs far more user-friendly.
But this was not just an effort to improve the docs pages. I want to improve my HTML and CSS skills so I took the time to really dig into new techniques for this little project.
Some years ago I got sucked into the whole Tailwind thing, but I have regrets. The ds-host
UI is made with Tailwind, and while it was quick to get going and have it look decent, now it feels like tweaking the look of the UI is impossible. Also I dislike having so many class names in the HTML.
So part of this is exercising my atrophied HTML and CSS muscles, so that I can rebuild my Tailwind code some day.
I could have just used Starlight since Dropserver.org is built with Astro but instead I reverse engineered (aka copied) their layout and learned a few things along the way.
It took a bit of time, but I was able to get familiar with new (to me) CSS features like :has()
and :not()
and clamp()
and others.
That’s just the tip of the iceberg. Features like @scope
and @layers
will really help keep CSS stylesheets manageable, which is the challenge that drew me to Tailwind in the first place.
See the result here: Dropserver.org/docs/. Note the collapsible menu works without JS!
Tailscale For the Dropserver Admin Panel
Work continues on making the admin and user routes available via Tailscale. Yes that’s right all the work I’ve done so far was focused on making tsnet
nodes for individual appspaces, so now I have to do similar (but different!) work to make the user’s ds-host
control panel accessible from yet another tsnet
node.
In order to not repeat myself the first task is to take as much of the code I wrote for serving appspaces via tsnet
and make it generic enough so that it can be used to serve other things.
This is progressing well. It’s the kind of work that forces one to think more clearly about the core role of each part of the code. It’s a lot of work, but the result is clearer code.
Commits aa891dd, ea6093a, and aafdce9.
Thinking about publishing a generic library for integrating tsnet?
Having done so much work to figure out tsnet
and build out a higher level API around it I wonder if I should publish this as a library.
I don’t have a lot of confidence in some areas of my integration with tsnet
, so I would like other eyes to look at it. It’s much easier for Tailscale experts to point out mistakes and offer suggestions on better ways of doing things in a standalone library than in my gigantic Dropserver codebase.
Plus, some projects might adopt it and point out bugs (highly likely) and even contributes fixes (LOL I wish 😓).
Unsure if I am going to do this, but I am putting it out there.
Keepin’Keepin’On
Short one this time. I’d rather spend time making progress than writing about the lack of progress in a “Progress Report”.
See you next month.