Bluesky avatar

hugeblank

@hugeblank.dev

Shitposting, Computer Science, Game Development/Modding, and anything Japan really. https://hugeblank.dev & https://grayhaze.live

WhiteBreeze, a single-user frontend for WhiteWind


So I've been a pretty heavy BlueSky user for a while, and recently went as far as to delete my Twitter. I found an interest/appreciation for ATproto after a bit of a frustrating time wrapping my head around it. Particularly, I've been interested in other applications of ATproto, besides the BlueSky short form text approach. I've seen a couple novel uses, picosky, pinksea, but the one that has caught my interest the most has been WhiteWind. The reason I think it's interesting is, when done right, all it really is is a middle man between your blog posts on a PDS, and your eyes.

That said, I do find some flaws with it. While it's nice that there's a front page with aggregation of recent and hot blog posts, and you do have a user page on the WhiteWind domain, all of that lacks the spirit of a blog site in my head. A blog site, to me, is a self hosted landing page where your thoughts and resulting entries go. Now obviously if you don't self host your PDS maybe you can accept the landing page not being self hosted, but I self host my PDS and my DID, so I'm sure you can imagine my thoughts on the matter.

After some stewing and pondering about whether I really was going to dedicate time to working on this self hosted WhiteWind idea, I decided to go for it. I have a degree in CS, and have done web development in the past, but every time I come back to web dev to try and start a new project I get incredibly lost in the setup. This time I decided to try Svelte, since I really haven't got any good experience with React like toolchains, it was about time I give it a shot. Since the project is just a lighter version of the WhiteWind frontend, I decided to give it the cute name "WhiteBreeze".

My goals for WhiteBreeze were to:

  1. Render a list of a single users WhiteWind blog entries, as well as rendering the markdown when clicking into them.
  2. Be easy to set up by anyone else.

The process to accomplish the first goal was actually incredibly simple, like step by step:

  1. Resolve the users handle (app.bsky.actor.getProfile on the public API)
  2. Get the user's DID doc (optional)
  3. Get all the com.whtwnd.blog.entry records (com.atproto.repo.listRecords on the user's PDS)
  4. Render those entries in markdown if there's a specific post being observed, or list the summaries if on the home page.

The results:

(What WhiteBreeze would look like if you were a certain bryan newbold)

The second goal is harder to prove that I've achieved, but I do think I'm far closer than what I can say about my other web projects. To set up your own instance of WhiteBreeze, assuming you have docker installed, all you have to do is clone it, run docker compose up, and direct a reverse proxy of your choice to it.

The UI is very "programmer" as I have no sense of aesthetic, but it's something I know I can work on over time. I also considered writing an editor and authentication system into the project, but that felt slightly out of scope since it would only be for one user realistically, and WhiteWinds own editor is perfectly sufficient. All of my problems purely exist on the "read" side of blogging. It is something I could see myself doing in the future though, since lexicons and authentication are features of ATProto that I'd like to familiarize myself with as a dev.

I'll be hosting my own WhiteBreeze instance on blog.hugeblank.dev, and you can host your own by cloning WhiteBreeze on GitHub. I just got back from a 2 month trip to Japan, visiting 20+ cities as far south as Nagasaki and as far north as Hakodate. I owe it to the people and experiences I had on that trip to share it, so please look forward to the page being occupied by loads more articles!

Thanks for reading!

~ hugeblank


Comments

Loading comments...