Show HN: I Built a Reddit-style Bluesky client – still rough, but open to ideas

threadsky.app

126 points by lakshikag 7 days ago

I’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?

NitpickLawyer 7 days ago

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.

  • nastoy 7 days ago

    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.

    • lukev 7 days ago

      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.

      • taurknaut 7 days ago

        Presumably you still need server code to prevent blocked users from interacting with each other, no?

        • lukev 6 days ago

          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.

          • taurknaut 6 days ago

            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).

    • taurknaut 7 days ago

      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.

      • mplewis 6 days ago

        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.

        • taurknaut 5 days ago

          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.

    • DoodahMan 6 days ago

      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..

      • mplewis 6 days ago

        They won’t change the way it works as the “nuclear block” is part of what most Bluesky users like about the platform.

  • Gualdrapo 7 days ago

    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.

bloopernova 7 days ago

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.

  • JimDabell 6 days ago

    > I think there's an opportunity for an "architecture inspired by bluesky" reddit alternative.

    Decentralised Reddit already exists. It’s USENET.

captn3m0 7 days ago

You should disable PHP Warnings:

    Reposted from /home/cyhaxztpeu/threadsky.app/post.php on line 1027

    Warning: Trying to access array offset on value of type null in /home/cyhaxztpeu/threadsky.app/post.php on line 1027

    Deprecated: urlencode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/cyhaxztpeu/threadsky.app/post.php on line 1027
"> Warning: Undefined array key "author" in /home/cyhaxztpeu/threadsky.app/post.php on line 1028

    Warning: Trying to access array offset on value of type null in /home/cyhaxztpeu/threadsky.app/post.php on line 1028

    Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /home/cyhaxztpeu/threadsky.app/post.php on line 1028
https://threadsky.app/post?uri=at%3A%2F%2Fdid%3Aplc%3Agtmiwo...
  • ComputerGuru 7 days ago

    Well, don't disable the warnings themselves but rather disable displaying them. They should of course still be logged.

e-clinton a day ago

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.

mariusor 6 days ago

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.

mdaniel 7 days ago

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...

  • lakshikag 6 days ago

    I'm not sure what you mean, but I can see all the replies nested under that specific comment.

  • NewJazz 6 days ago

    Bluesky is requiring sign in to see the thread.

    • consumer451 6 days ago

      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.

lakshikag 5 days ago

(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!

mullingitover 7 days ago

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.

  • lakshikag 6 days ago

    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.

mattvr 7 days ago

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.

  • lakshikag 6 days ago

    Thanks! Open-sourcing is definitely a priority once things are a bit more polished.

catapart 7 days ago

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!

  • lakshikag 6 days ago

    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!

    • catapart 4 days ago

      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?

      • lakshikag 2 days ago

        You can now change the channel name and URL from customize channel settings :)

      • lakshikag 4 days ago

        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.

fracus 7 days ago

This is a really neat idea. Make sure you are around when reddit implements PPV and dies.

  • lakshikag 6 days ago

    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!

srameshc 7 days ago

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 !!

AstroJetson 7 days ago

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.

  • lakshikag 6 days ago

    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

jmclnx 7 days ago

I tried logging in with my bluesky ID, no luck :(

>success false >error "Please enter your Bluesky handle and password"

  • danielsunsu 7 days ago

    Did you try logging in with an app password?

    You may need to create one here: https://bsky.app/settings/app-passwords

    • jmclnx 7 days ago

      I already have a login to BlueSky: https://bsky.app/

      Do I need a special login for the Reddit Style one ?

    • jaggs 7 days ago

      Odd. I tried with an app password and bsky login and got told that I needed authentication. Not sure why it's broken.

aga98mtl 7 days ago

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?

Linkd 7 days ago

Very neat way to browse a feed.. Any plans to implement up/down voting?

  • lakshikag 7 days ago

    Thank you and yeah this is something I also have on mind

swyx 7 days ago

nice looking page. how are Channels implemented? how do you decide which skeet goes into which channel? right now it looks a little noisy.

iJohnDoe 6 days ago

Pretty cool. Clean design. Nice idea.