Show HN: I Built a Reddit-style Bluesky client – still rough, but open to ideas
threadsky.appI’ve been messing around with Bluesky for a while, and one thing I really missed was a proper way to browse discussions in a structured, Reddit-like way specially myself being daily reddit user. So, I ended up building a Reddit-like client for Bluesky that scratches that itch: Threadsky.app
It pulls in trending topics, lets you explore conversations with a threaded view (so no more getting lost in replies), and even allows users to create channels with customizations, basically, like subreddits but on Bluesky.
That said, this is still pretty barebones, and there’s a lot to improve. I really need feedback from actual users to shape where this goes next. Some planned features include markdown support, longer posts, and better mod tools for communities.
For privacy-conscious folks: Only details about channel customizations are stored on our servers. Everything else remains securely stored on your own PDS (Personal Data Server), just like the rest of Bluesky.
Also, I’m planning to open-source the project once I’ve polished things up a bit more.
Would love to hear your thoughts on what’s missing and what would make this actually useful?
Interesting idea, but I'm not sure it's gonna work in the long run. There is a key difference between reddit / forums and bsky / other apps like it. Forums are many to many, and the focus is around community. Someone (doesn't really matter who) posts something, and lots of people comment. You go there to read the voices of many people. Bsky / birdapp on the other hand focus on one to many. The person posting matters the most, and the commenters are usually "followers" or people interested in what one person has to say.
It's a key difference IMO, and the main reason I like forums and heavily dislike the twitter-style apps. I want to read the voices of many, not the voices of few "influencers". You can make it look like a forum, but it's still gonna be focused on the voices of few.
That being said, with reddit going crazy over the last few years (and especially this last election cycle), I'm open to suggestions on new places to try that focus on forum-style discussions.
Agreed and there's also the problem that on Bluesky, one user blocking another means that the thread of conversation gets broken for everyone else who may read it.
See e.g. https://github.com/bluesky-social/social-app/issues/7021
> As it stands, if 20 people are involved in a discussion, and ONE single person decides to block someone, then all of a sudden, the 19 other people in the discussion (+ any other viewers) are now inconvenienced simply because one person had an issue with someone else.
> Bluesky does have a bit of a block culture, and as such, this issue is only going to get worse and worse, and threads are going to get harder and harder to read and follow as more and more people get blocked.
Trying to create a Reddit-like experience around this limitation would be very difficult, as the thread breakage is done server-side so the clients don't even get enough info to reconstruct the conversation.
I haven't looked at how Threadsky does it, and I don't want to weigh in on the merits of different approaches.
But blocking in ATProto happens at the application (AppView) layer. A different application can absolutely make different choices from the Bluesky app about how blocking works and is displayed.
Presumably you still need server code to prevent blocked users from interacting with each other, no?
If I block you, then my client will prevent me from seeing your records.
There's nothing at the protocol level that prevents you from seeing my records, even when blocked, because all records are public. Anyone (even without an account) can see everyone else's records.
Well behaved clients are guided not to show posts to a blocked user, but this is a developer norm to enhance user experience all around -- seeing posts from someone who blocked you generally doesn't do anyone any good. But the protocol fully lets you build a client that shows you exactly who has blocked you and what they're posting.
Right, but there's more to blocking than content filtering (which is more akin to muting in twitter nomenclature). It should also restrict the blocked person from interacting with my content. At least that's what I'd expect (and I suspect most would).
I'm struggling to come up with what intent this behavior was supposed to perform. I block probably one person every other thread.
I don't block you because I had some kind of conflict, I blocked you because I don't like what you tweet and I don't want to see it and it's not clear what "not interested" actually does. Why this would impact anyone other than whom I'm blocking is perplexing. I certainly can't vouch for what they want to see and whom they want to interact with.
The reason this impacts other people is because Bluesky wants to discourage “dunk” culture in which one user continues to make fun of or harass another user who has indicated they do not wish to interact or participate. By orphaning interactions after users block each other, it becomes much harder for unrelated users to QT a post and add their own commentary to something that has already been definitively concluded.
Dunking on people is like half the value of twitter-like platforms. I only go on twitter (or I'm guessing bluesky) to see politicians and journalists and pundits and celebrities get dunked on. It's a public square: open moderation of social values is half the point. It's the conflict that makes us stronger.
Haters will say dis/misinformation makes it not worth it, but i simply point out that it's the truly stupid people who speak the loudest and you need to look deeper. There's no going back to a world where for-profit media is above critique. The relentless violence in palestine firmly endorsed and enabled by western media has pretty much destroyed any faith I had that our for-profit media is capable of self-regulation. Dunking on these morons is a public good.
What we really need to figure out is a way to systemically encourage punching up, not down.
The way blocking works on Bluesky is easily the most frustrating part of the platform I've encountered. I'm all for blocking trolls, spammers, etc but it seems even a mild divergence from the crowd gets you whacked. It's a bit stifling in my experience. I wonder if they'll change the way it works..
They won’t change the way it works as the “nuclear block” is part of what most Bluesky users like about the platform.
There's Lemmy and nostr, for example.
But I absolutely agree that the individual-centered social media is as toxic as it can be. Forum-style social media is just a bit less toxic but can be more constructive since it's centered about community and ideas rather than particular individuals/personas.
I think there's an opportunity for an "architecture inspired by bluesky" reddit alternative. The reddit CEO recently said they intend to start charging for premium features, which may drive a large number of people away from the platform.
> I think there's an opportunity for an "architecture inspired by bluesky" reddit alternative.
Decentralised Reddit already exists. It’s USENET.
You should disable PHP Warnings:
"> Warning: Undefined array key "author" in /home/cyhaxztpeu/threadsky.app/post.php on line 1028 https://threadsky.app/post?uri=at%3A%2F%2Fdid%3Aplc%3Agtmiwo...Well, don't disable the warnings themselves but rather disable displaying them. They should of course still be logged.
I started building a client too but the fact that one needs to handle a user’s creds directly just felt off to me. Don’t understand how this is an accepted practice.
I'm working on a similar service but built on top of ActivityPub and from experience I can say that consuming the firehose in real time with your app (I'm referring to the "random discussions" section) is going to be slow as hell.
I recently moved into a direction where the relevant streams of content (let's call them subreddits) get built in the background and persisted locally so when users interact with the website don't need to wait for the whole thing to be built synchronously.
I think I'm missing something; I tried to find a deeply nested thread[1] in order to see how that would work, but when clicking on the "view on bluesky"[2] it did take me to the ... comment? post? ... but there was no further context. Is this just a view on top of some specially curated comments on Bluesky?
1: https://threadsky.app/post?uri=at%3A%2F%2Fdid%3Aplc%3Ahu2obe...
2: https://bsky.app/profile/tmarsland.bsky.social/post/3kl47lio...
I'm not sure what you mean, but I can see all the replies nested under that specific comment.
Bluesky is requiring sign in to see the thread.
Just to be clear, that's a user-level setting. Each user has the option to ask client apps to require sign-in to view their posts. Due to the open nature of AT Proto, this can be ignored by client apps.
(2/17) Quick update! I've added colors for nested comments to improve readability and started working on a voting system. It's still a work in progress, but it's live!
Any way to collapse a thread? This is the one thing that's driving me nuts with the regular Bluesky interface, I want to skip past a thread and it's not easy to do. BS is doing threaded replies, but without a good interface for it.
Totally agree with your point and I actually have this on my to-do list, and seeing your comment bumps its priority. It should be available in a couple of hours.
Excellent idea! I'd focus on the open-sourcing and community elements (e.g. creating feeds) so it can get traction, rather than features like Markdown and longer posts at this stage.
Thanks! Open-sourcing is definitely a priority once things are a bit more polished.
Seems like a good idea. I've signed up.
I did run into a 404 when trying to use the "Customize Channel" feature. And I also could have used a "preview" step before publishing so I could better understand what the channel-creation fields corresponded to before locking in a placeholder name.
Otherwise, it seems like a pretty straightforward proposition and a net positive, so thanks for building it!
The 404 on Customize Channel should be fixed in a couple of hours. A preview step for channel creation is a great idea too. I can see how that would help avoid accidental choices. I’ll add it to the roadmap!
If you run into anything else or have more thoughts, let me know. Really glad you’re finding it useful!
Hey, I see that the customization got taken care of. Thanks!
I was really hoping I could change the channel name or, barring that, delete the channel so I could create one with an appropriate name, but I don't see any option like that. I like the options you do provide, though! Seems like it covers most of what I would want to do. I just also want to change the name/url, even if that means scrapping it and starting over.
Following that down, though, I'm also kind of wondering what the plan is for changing channel ownership?
You can now change the channel name and URL from customize channel settings :)
You’ll be able to change the channel name and URL soon! Channel ownership needs more thought, but I’ve got it on my list including some mod tools for channels.
This is a really neat idea. Make sure you are around when reddit implements PPV and dies.
Haha, I’ll be keeping a close eye on things then :D
Jokes aside, I’m in this for the long haul and want to make Threadsky a solid alternative, regardless of what happens elsewhere. Appreciate the support!
This is so cool idea. This is a very good example and probably give rise to many more ideas to build on the platform. I will have more feedback in the time to come if you can start a thread for that. Onward !!
Really appreciate your support! I've created c/threadsky so you could share anything related to ThreadSky in it. https://threadsky.app/c/threadsky
I still mourn the loss of Apollo on my iPad. If you are looking for a guide to what worked and was wildly popular, mimic the things from that app.
Your app may be the thing that tips many people into Bluesky.
I hear you. If there are specific features you loved from Apollo that you’d want to see in Threadsky, I’d love to hear them!
And hey, if this helps more people make the jump to Bluesky, that’s a win in my book :D
I tried logging in with my bluesky ID, no luck :(
>success false >error "Please enter your Bluesky handle and password"
Did you try logging in with an app password?
You may need to create one here: https://bsky.app/settings/app-passwords
I already have a login to BlueSky: https://bsky.app/
Do I need a special login for the Reddit Style one ?
Odd. I tried with an app password and bsky login and got told that I needed authentication. Not sure why it's broken.
Wall to wall astroturfing on Reddit is killing it's usefulness since the election. We need an alternative that prevents botmasters from having 5000 accounts. One solution is doing like X/twitter and charging $8/month. Another solution would be using Meta's social graph. Is there some other way to prove you are a human?
Very neat way to browse a feed.. Any plans to implement up/down voting?
Thank you and yeah this is something I also have on mind
nice looking page. how are Channels implemented? how do you decide which skeet goes into which channel? right now it looks a little noisy.
Pretty cool. Clean design. Nice idea.