7 ms·
Show HN: Social network that looks and works more like a forum
- datguyfromAT 5y agoif anyone wants to add me there: https://hey.cafe/r/datguy https://hey.cafe/r/datguy
- anr13 5y agoFollowed.
- anr13 5y agoHey.Café is a social network built around communities called cafés. Has lots of formatting options on posts similar to Markdown. It's also really really fast.
- yuppie_scum 5y agoReddit?
- anr13 5y agoUm, more like Twitter and FB had a baby and removed the ads and tracking.
- gopiandcode 5y ago...for now. It's a proprietary, centralised service, so there's pretty much _nothing_ stopping it from doing that in the future ("money left on the table" and all that). I think for now, the fediverse seems to be the most sustainable alternative to modern social media.
- anr13 5y agoNot entirely. The entire front end is a single JS block, so anyone can re use, but I also am making the entire API endpoints I made open and just working on the documentation now.
- anr13 5y agoHere is an example of larger content. It supports auto embeds from Twitter, Youtube, Twitch and more. If you load anything not self hosted it will ask for permission before embedding content from outside the domain. https://hey.cafe/conversation/j8olwfmlbpmlloww4yh4bxfz9 https://hey.cafe/conversation/j8olwfmlbpmlloww4yh4bxfz9
- anr13 5y agoYes I built it, and I hope people like it. It still has a lot of stuff on the roadmap and supports thins like website embeds that I use on my personal site https://anthonys.space https://anthonys.space and a lot of formatting options for posts, including Pro users able to post really long content. Still lots to do and lots on the roadmap but suggestions and feedback are helpful. Oh another key thing is the site is built using a single Javascript block, no trackers and no ads anywhere. Clean as it can be.
- bovermyer 5y agoI gave you money because I adore this concept. Don't rush the features too much. Already had one fun conversation (with you?) about Star Trek. Oh, and if you need infrastructure advice (I don't think you do, at least not yet), I would be happy to help.
- anr13 5y agoOh yes thanks! I also due to your café found out I need to make a change when still set to private so the admin gets an alert to approve members.
- olah_1 5y agoFeedback would be to share the roadmap and code :) I’m trying to figure out what makes this special other than some nice design aesthetic
- anr13 5y agoI totally want to yes, the backend api's are all going to be public shortly. You can see some stuff we are working on and updates here: https://hey.cafe/c/hey https://hey.cafe/c/hey and more in the conversation I made 4 days ago with some changes already made. https://hey.cafe/conversation/j8olwfmlbpmlloww4yh4bxfz9 https://hey.cafe/conversation/j8olwfmlbpmlloww4yh4bxfz9
- olah_1 5y ago
- deleted 5y ago[deleted]
- andrewstuart 5y agoIs this from 37 Signals?
- kingcharles 5y agoYou're thinking of https://hey.com/ https://hey.com/
- anr13 5y agoNope all made by me, all in one Javascript block for the entire front end.
- ilikeitdark 5y agoI'll give it a whirl...
- anr13 5y ago:)
- bohwaz 5y agoDoes not work without JS :(
- userbinator 5y agoIndeed. All the forums I've used don't need JS to function.
- anr13 5y agoThat is the one down side I built the entire thing as one JS block, so without JS there is absolutely nothing, but it also includes no external JS or anything, it's just inline and it's got no tracking or analytics at all on the client end.
- zelphirkalt 5y agoThis makes it much less like a traditional forum. That changes things, as I now would have to trust the JS, to run it in my browser on my machine. The parent comment merely states a fact and expresses their disappointment. That is not something to downvote. Maybe the JS crown is a bit too allergic here? It is a perfectly valid concern and would be a reason for me as well to not use it, unless I took a lot of time to check the JS source. Even then, the JS might change over time. I would have to read all of it again and again to really be sure nothing nefarious is going on.
- anr13 5y agoThis is the reason all modern systems sandbox JS. The amount of people that run with JS off is a tiny tiny fraction of a percent on the web.
- zelphirkalt 5y agoThat sandbox still leaves a lot of things accessible inside the browser though. APIs, which the site does not even need, but are provided by default by the browser. If I had a browser, which asked me for every new API (for example: "making requests to a server, first party, third party) access and the JS gave me a sound reasoning, of why this needs to happen, then perhaps I could trust it more. We have that partially, for things like location access, camera and microphone, but those are only very few things. I would also like to be able to specify, whether JS for one website (not only in general, but also that) is able to access my fonts list and stuff like that. If we had this kind of control, then we could create generic profiles and go into the direction of Tor browser in terms of disappearing in the crowd when it comes to fingerprinting. Then we could share these profiles with other less tech-savy users to protect them as well.
- zaik 5y agoDoes it integrate with existing Internet Standards for social networks like ActvityPub or XMPP?
- anr13 5y agoOh thats a good idea never though of that. It's got a really simple json backend api where you can request users and stuff, and feeds will follow shortly, it's all built just need documentation. https://endpoint.hey.cafe/api/conversation_info?query=utdtlssvmxi9lg5cyqcapgrb0 https://endpoint.hey.cafe/api/conversation_info?query=utdtls...
- scrollaway 5y agoI didn't check if you implemented it but making sure Atom is in the mix for good support in RSS readers would be a fantastic add.
- anr13 5y agoI am adding RSS feeds shortly it's in my todo, I can already read them and will provide RSS and JSON outputs for feeds and user info and more.
- chrismorgan 5y agoPro tip: use RSS for podcasts because almost nothing in that space supports Atom, but shun RSS and use Atom in all other cases, because it’s the strictly superior format (RSS lacks a couple of features, uses terrible date formats, and is encoding-ambiguous in a few places like title and body that causes clients to guess whether you’re writing plain text or HTML, and occasionally guess wrong) and everything supports both.
- anr13 5y agoThe nice thing is I can add many formats, just rewrite the JSON in a version thats better for the use case.
- lukasb 5y agoHave you considered showing the add comment UI for non-logged in users, and then sending them to the register flow if they comment?
- anr13 5y agoGood idea, I did add a comment to the top of the page that will take them back but I think adding a dummy comment and new conversation field is a good idea.
- elihu 5y agoSome suggestions: add an index or search engine to find existing cafes if there isn't one already. Also, provide a more terse way of navigating posts that isn't basically a single item fill the whole screen. (Something I like about HN and old reddit is that it's easy to navigate a lot of content because you can fit a lot of things on your screen at once.)
- anr13 5y agoYes, adding to my list a compact mode, and a search is on the explore area, but I plan to move that to the header with drop down feedback as you type.
- systemvoltage 5y agoLove the ideas from this company, not a fan of the UI of Hey or Hey.Cafe. It is verbatim Twitter, rounded corners, giant fonts, lots of negative space, exactly opposite of what I gravitate towards. It is...I don't know how to explain it, garish and flimsy. I understand this is a problem with me and I don't mean to dilute the effort. I am very much impressed by the concepts and ideas from Hey. Kudos.
- anr13 5y agoThanks. I know it's not for everyone, and the differences are huge once using especially the groups and longer form content and uploads. But it's not a design everyone will love. Thats why I am making a open API that will be free to use with no limits so anyone can do anything they want as far as clients go.
- deleted 5y ago[deleted]
- rovingEngine 5y agoWell done - I’m working on something broadly similar for similar reasons. How do eventually plan to monetize to keep it ad-free?
- anr13 5y agoYou can get Pro and that gives larger quality images and the ability to upload files like videos. It also gives larger content, but over time I will allow others to make longer content also. Just need to get some real usage under the belt to see what kind of resources it uses up. https://wave.hey.cafe/pro https://wave.hey.cafe/pro
- jonstaab 5y agoCan I run my own node? If not, then I don't care (although a forum interface would I think be vastly superior to the usual news feed interface). Edit: this is not meant to be dismissive, it's just that the main problem with social media right now is centralization. I'm simply not interested in jumping from one centralized option to another.
- sergiomattei 5y ago
- Ourgon 5y agoIt may have been somewhat curt but the essence stands: if "social" networking is to have a future the controls should be in the hands of the individual contributors, not in those of a few site owners. Even if your ideas align with current site owners this may change in the future, either because of an ownership change or because you change your mind. Even if you disagree with the people currently being censored and "de-platformed" you should realise that the same fate will await those who you agree with when the zeitgeist changes - as it has been doing forever and will keep on doing whether you like it or not. So, to the author a repeated question: will it be possible to self-host this system? Does it support federation or are there plans to do so in the near future? The time is ripe for a robust distributed discussion platform to compete with the onslaught of "alternative" centralised social networking services which each seem to have their few minutes of (in)fame but mostly end up in the same situation as the entrenched actors they were meant to replace.
- Chris2048 5y ago
- marginalia_nu 5y agoIs centralization really the problem, though? I feel like in a lot of ways, something like Mastodon isn't much better than Twitter, should it somehow take over. Sure you have a lot of servers, but they all run the same software and approach the problem in the same way. It's a decentralized monoculture replacing a centralized one. How many servers they are run on really doesn't matter. What we need is multiple different paradigms. This, even if it's just one guy running one server, is a step in the right direction. What I'd most of all like is something that lets the visitors own their own posts while still allowing some form of communication. Dunno, like something combining RSS and a forum.
- tines 5y agoFirefox user. If I hit the Register button at the top of the home page, then it back, the register/login buttons disappear and I can't get them back without refreshing the page.
- anr13 5y agoOh, never seen that one before, I will see what I can find and fix that.
- astonex 5y agoAny chance you're familiar with Naver in South Korea? Naver has communities which are created by users and are called Cafes. The Cafes are essentially message boards https://en.wikipedia.org/wiki/Naver#Naver_Cafe https://en.wikipedia.org/wiki/Naver#Naver_Cafe
- anr13 5y agoNo never seen before. I will take a look.
- kingcharles 5y agohttps://section.cafe.naver.com/ca-fe/ https://section.cafe.naver.com/ca-fe/
- khazhoux 5y agoCongrats! Love to see people bringing new ideas to the chat/forum space. Can you talk about the FE/BE architecture. I know you said it's a single block of JS... all hand-rolled? What's the server and database, etc?
- anr13 5y agoSure. Database is really standard, media is stored on B2 and the backend is made easy so I can scale up the servers as I need really quickly. I am going to post some images over on Hey.Café of the usage here, but I am seeing only a few percent points of usage with 300k+ requests at the moment. The JS is separated on my end to files for editing and on push to GitLab it compresses it down on the server that hosts the frontend. Each backend endpoint is a $5 server on vultr, the front end one is also just a $5 server and the database us a $10 one but it's seeing little load.
- MBCook 5y agoWhat’s the plan for supporting this financially? If it grows at some point it will be too expensive to be a side project for someone to pay for. But usually when the ads come in but the site mentions no ads. So will there be paid memberships? Sponsorships of some sort?
- anr13 5y agoYou can get what's called Pro. Thats what lets you setup communities and groups and allows for larger content and higher quality media. This is my second large social network and the first was online for almost 10 years. It's extremely lightweight as all the generation and everything is all client side so the server just stores DB data and provides JSON payloads.
- holler 5y agoAt that point some form of analytics will be necessary. I appreciate the ethos behind this nonetheless.
- anr13 5y agoServer side and the little bit I need I can get from the DNS end like country and stuff. I don't plan on adding anything user side that slows things down or makes it a mess.
- anr13 5y agoI will need be adding anything like analytics user side, or tracking of any kind. I want the services to be ad free for everyone and larger features for Pros. I hope this can make it a project that can run into the future. It just had over 200K request in a few minutes and the server load is under 3% for under $50 a month and it is easy to scale.
- taurusnoises 5y agoFirst, nice job! Looking through it now. Also, maybe this is just me, but I'd drop the "Followers" "Following" language. It wreaks of "big" social media and all that comes with it. If I had to choose, I'd go with "Connections" or something intentionally banal. But, again, may be just me. I just hate social media and all its "ways."
- anr13 5y agoThat I like! I agree completely! Added to my notes thanks.
- bovermyer 5y agoThis is a lot harder to name than it might first appear. Also, I apologize for being pedantic, but... "reeks," not wreaks.
- taurusnoises 5y agoI am ashamed (Masters in writing)
- bovermyer 5y agoHey, I still f** up basic things in just being a human being, no need to feel bad. Just thought I'd point it out in case you were unaware, not because I thought you were incapable of spelling it Right.
- Guest19023892 5y agoNice work, it's lightweight and fast to load. A few notes after using it for a bit... 1. There's far too much white space and unnecessarily large headers. Reading content in cafes seems to be the heart of the site, however, this is what I see when opening a cafe on my 1920x1080 monitor - https://i.imgur.com/1j0exRM.png https://i.imgur.com/1j0exRM.png. There's literally not a single piece of content for a returning user to read without scrolling. 2. Something weird is happening with post times. I saw a comment that was posted -666 seconds ago, which snapped to 3 minutes ago after refreshing. 3. The background color is too light and it blends with the discussions, making it difficult to visually separate them. Here is the existing background - https://i.imgur.com/wVr0RYs.png https://i.imgur.com/wVr0RYs.png and a darker one to add more structure - https://i.imgur.com/U5sekNI.png https://i.imgur.com/U5sekNI.png. 4. Overall I find the content a little hard to read. I prefer sites with discussion titles (Reddit/HN/forums) as they help to summarize an entire post or image in a few words. Without them I need to spend too much time reading each discussion trying to parse what it's about and if it's relevant to my interests.
- anr13 5y agoThanks this all helps a lot. I am adding it to my feedback document and I will make some changes. The time thing sounds like the JS failed to connect for a second to the backend endpoint, thats what tells the site what the timestamp is now for it to calculate times.
- anr13 5y agoI love the feedback, I have so many improvements to make and changes in my todo list. This is the kinda help I was really looking for and it will make things better. Thanks everyone!
- popfastful 5y ago
- danielhlockard 5y agoBro stop spamming your stuff on HN and figure out how to use fucking padding. All of our posts are slammed left and it looks like there's CSS missing.
- im3w1l 5y agoWhat are the pros and cons of say the Pokemon Cafe compared to a Pokemon reddit or a Pokemon discord or a Pokemon fanwiki? Is there a certain usecase where it shines?
- anr13 5y agoNot entirely but the rendering of media and full conversations. I plan on adding chat channels to Cafés so you can have chat rooms within them also. Each café is made by someone and they can have moderators. Things can be private or features locked down from public or even other members, so for example our own updates one only allows comments and reactions from members except admins who can post the updates.
- sergiotapia 5y agoWhat are the privacy settings? I don't want people to know my email or even my name (that is still an alias but still)
- anr13 5y agoDon't need to use your real name, and the email is ONLY shown in settings and on account info API requests IF it's your account, nobody but you will ever see it.
- chrismorgan 5y agoSome technical review from impressions. You’re loading about 430KB of JavaScript. That’s quite a lot to parse and execute (yeah, less than many sites, but judging by the functionality it could probably be under 20KB for people just reading the site—code splitting, and all that). Gzipped, it’s over 70KB. Feeding it through Terser to minify the code (which achieves much more than just joining the lines), you can trivially cut it down to about 370KB with no breakage, and treating it as a module (so that it can mangle top-level names) reduces it to 230KB/50KB, which would execute distinctly faster, except for the minor matter that everything will break because event handlers are routinely expressed as strings, including function names (and that’s probably the biggest reason why you should separate event handlers from markup). You’re reimplementing various things that the browser provides, badly. A few examples: • <a href='javascript:…'>. This is always bad. Either use a link with a meaningful non-JavaScript href that will work with things like Ctrl+click/open in new tab and possibly add a click handler that will event.preventDefault() and do something different for the current tab (though for general navigation in SPAs it’s normally easier to attach just one “in-app link” interceptor on the document root), or use a button with a click handler. • <div onclick>/<span onclick>. This is almost always bad (use an element with click semantics, such as a link or a button), and always bad if the element is not focusable by keyboard (e.g. by the tabindex="0" attribute). When it’s <span onclick="javascript:appSwitchPage('/conversation/xjbjpgpqrpvutlf8wcgz1gt50')">, well, that’s even worse than <a href="javascript:appSwitchPage(…)">. Your approach there should be closer to <a href="/conversation/xjbjpgpqrpvutlf8wcgz1gt50" onclick="event.preventDefault();appSwitchPage(this.href)">, though again I say one root link interceptor is generally a better approach. • History management: you’ve implemented your own back button, a strange choice in general (why not use the browser’s like everyone else? For some sorts of apps, an up button that takes you to the parent in a hierarchy can make sense, but I can’t immediately think of any reasonable case for a back button), but your history management also just interacts badly with the browser’s own, with your back button adding a new history entry, and clobbering history when the native back button is used. • Page loading: every time you load a page, you use your own loading spinner, and don’t cache various things that reasonably could be. This is a massive regression in experience from the traditional MPA/server-generated HTML approach, where you tend to stay where you are, with only a small indicator that things are happening, until it’s ready and changes over. The end result of all of this is that this site feels much slower to load than it should, and that every load is painful and very disrupting. I’m in Australia, by the way, so add about 150ms on to whatever you may be used to—though the responses seem to be slow enough that latency doesn’t dominate it. Other issues: • Relative time display looks to be anchored to when you loaded the page/app, not when you loaded a particular view/page. This leads to times being wildly wrong, including future times (“-1234 seconds ago”). The problem looks to be the way settings_timestamp is used. • The style of the code leads me to be concerned about injection attacks; in most places, the client is mixing template markup and responses from the server as raw HTML, thereby trusting the server to protect against malicious markup. I tried creating an account with values like <script>alert("xss")</script> for name/alias/bio/whatever, name netted me a crash on /settings/me when I click on the value which shows <script>alert("Name")</script&, “SyntaxError: missing ) after argument list”. I’ve gone no further.
- crawl_soever 5y agoIf it works like a forum in the classic sense, why can't I at least get some basic content with JS disabled?
- Chris2048 5y agopresumably that places a greater burden on the server?
- hkt 5y agoI'd imagine not - a javascript frontend is still hitting an API, after all. A dynamically generated, static frontend (eg, HTML and some CSS) is something that can be trivially cached, too.
- Chris2048 5y agoAssuming it's static. If there is any post hiding, or filtering based on filters/search etc that might not be cached.
- anr13 5y agoThe backend load is almost nothing, everything is done client side for rendering, on the fly generation of the CSS and more. There is no CSS in the document, it's all rendered as it is needed and modified as it's needed. This also allows for colours based on percentages and OS set colours or modes like light and dark without having both loaded in the page. It also means rich embeds and more like videos, tweets, articles and formatting.
- BlackLotus89 5y agoWanted to register and it didn't work since you didn't recognize foo+bar@mydomain.space as a valid email address. I always use sub-addressing to sort/filter my mail and am always a little disturbed when sites implement their own parsing mechanisms/regex....
- OJFord 5y agoIf it really is mydomain.space & not gmail.com (say), then why not use foo.bar? Not allowing `+` is all too common, but everyone allows `.`.
- BlackLotus89 5y agoWanted to implement some kind of catch-all address for a while now, but never had any reason to. + is part of the standard RFC and a dot-based sub addressing would have to be implemented by me. If I ever find the time to implement a catch-all address I probably will have to use some randomization as well. If I for instance would use ojford+hey.cafe@mydomain.space or ojford.hey.cafe@mydomain.space it could be easily attributed to me, while for some sites I just want a throwaway mail address.
- anr13 5y agoHad to as the default matching schemes in most programming languages don't match our own domain hey.cafe, but I have fixed this and it will now work.
- mrkentutbabi 5y agoIs this related to hey email by basecamp?
- anr13 5y agoNot at all.
- alfiedotwtf 5y agoHey @anr13, I never got my email verification to a .wtf domain :)
- anr13 5y agoHum, I don't send out the mail we use SparkPost... Double check the email set in settings if still nothing I can take a look.
- alfiedotwtf 5y agoNuts. I checked settings and the email is correct :(
- anr13 5y agoI checked the spark post log and it looks like your email provider bounced the email, out of hundreds of others it was the only one that bounced and it was bounced based on a user preference is what it told the mail sender.
- anr13 5y agoChecked the first email it tried to send it and your mail provider said this back to us: address: No such user here. I checked with the email you set on the account, your mail provider said the address does not exist.
- alfiedotwtf 5y agoOh, thanks for that. I'll try another then. Weird
- interestica 5y agoThis is great! It seems it defaults to a dark mode with no way to change? I have an issue with the "card" design/UI of conversations on the main page -- I can't tell what's clickable. It seems the timestamp is a link, but other parts are not. On mobile there's no indication.
- anr13 5y agoThe mode uses the system default, if your OS says to use dark mode we use dark mode, if the OS says light mode we use a light version.
- kingofpandora 5y agoJust a small inconsistency. I see both of these forms: Cafés Café's
- anr13 5y agoYes it should be without ' if you see pages with that I will get it fixed.