Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Turn any WiFi into a persistent group chat
67 points by melvinmt 7 months ago | hide | past | web | favorite | 56 comments
Try it out on your WiFi: https://tapchat.com

I’ve always been shocked at the fact that it’s easier to chat with someone on the other side of the world than with someone who is on the exact same WiFi as you. I think that is a shame because WiFi networks are essentially a bunch of existing micro-communities which your phone already automatically connects to. Think about how many other people have used or will use the same WiFi as you at home, school, work, or in public; and so far it has been practically impossible to chat or share pictures with them.

After leaving my job earlier this year, I decided to work on a simple chat app that solves this problem, by simply opening a persistent group chat for every WiFi you connect to, which allows for long-lasting conversations and meaningful relationships everywhere you go. So far a great use case I've seen are college campuses where thousands of students connect to the same WiFi, and who can now all chat with each other. I'd love to see what else this can or will be used for.

(Spoiler alert: the app doesn’t bother with mesh networks)

Feedback is much appreciated! (the gentle kind)

I have an organic growth marketing suggestion: - Laptop stickers. Start with your own laptop. See if people come online and talk to you. If they do, ask them if they'd like a sticker too. Tell them that they can gift a sticker to a friend from the website.

- Also, a desktop app / plugin for Slack / Discord / something else. I don't pay attention to my phone when I'm working but I am on a few chats that I check on and off on my laptop.

I really like the laptop stickers idea, I might try it out!

I used to have DuckDuckGo stickers that Gabriel sent me way way back. Those laptops are long gone and really wish there was a way to get more easily. I loved when people would ask me about them and get to explain and show DDG.

So how does it work? When you say "same SSID" do you mean your app uses broadcast/multicast across the network or do you mean you are saving the SSID/BSSID and centralizing the conversations in a cloud database? In the first case how do you deal with the majority of large Wi-Fi networks that disable peer to peer communication? In the latter case how do you differentiate if it's SSID not BSSID?

I suppose I could find out if I downloaded the app and tried it out but I'd rather read about how the app works than just run random programs on my phone. The website itself doesn't give much to go off of in terms of feedback-able content and the app pages just show some messages.

Great question. The app uses a combination of SSID and public IP address as identifiers to create unique channels so both your SSID and outgoing IP will need to match to access a chat.

So if your public IP address changes, do you (and everyone else in the chat) permanently lose access to it unless you can manage to get the IP back?

I have a dynamic IP from my ISP at home, so that wouldn't work?

Unfortunately this may not work at universities and other enterprise networks since each user is often given their own public IP for auditing purposes.

I wonder if he could also store the MAC address of the wireless AP against a unique key (eg a uuid). Then the calculation is something like:

  SELECT uuid
  WHERE ssid = ?
  AND (ap_mac = ? OR public_ip = ?)
if no results are returned then create a new uuid and add the public IP and access point's MAC address. If you do get a result then connect to that chat while checking that both the ap_mac and public_ip have records (if not, add them).

That way you cover dynamic IPs and multiple access points by gradually meshing them in your database.

There is, of course, the risk that if you have multiple APs each with their own public IPs but part of the same college campus then this wouldn't work. But then neither would the current solution either. I don't know how you'd fix that without inviting APs into a chat (which isn't desirable because that would mean you'd then want a chat administrator. By which point you're effectively just reinventing Slack et al). So you'd want some kind of automatic way of doing that. But I'm not sure how you could do that safely.

Also there is the risk that if each student has their own public IP then you might also have a situation where there is multiple different chats because different students created a new uuid on different APs before roaming around the campus. When that happens you'd need a way of the server identifying that a public IP has joined a new uuid with an existing but different ap_mac and ssid so the two chats need to be merged.

There's definitely going to be quite a few edge cases that need solving but it's one of those challenges that looks rather fun.

[edit: the BSSID might also work in place - or in addition to - the access points MAC address. However there are some caveats you'd need to take into account with BSSIDs]

my public IP might change, also my SSID because I like to do jokes with my wifi names, but my geo coordinates (with a proper tolerance distance radio) should remain the same.

It feels like this should work over a local network without requiring an internet connection. Or are you focused on just using SSID as a form of authentication for chat rooms on the internet? If so, what's to stop me from setting my router's SSID to something like "AppleCampusInternalWifi" and getting access to something that might be assumed to be private?

It's not just the SSID, the public IP address also needs to match (which is harder to spoof), see my other comment here: https://news.ycombinator.com/item?id=19792374

The external server is needed to create a persistent chat that stays around even after every participant has left the network.

You could use MAC addresses also, maybe.

I was travelling recently with a group of people and wondered whether something like this might exist. My use case was to have a way of easily sharing photos with people close by (we were all being driven around in the same car) without the need to involve anything dodgy like Facebook. WiFi did cross my mind as we were all connected via the same pocket WiFi adapter although I was wondering if it could be made to work without an internet connection. Especially useful when you're travelling through regions with patchy cell coverage.

I've collected a bunch of interesting services for LANs at https://github.com/fiatjaf/awesome-lan. I'll add Tapchat too although it's missing a desktop app.

This is a great idea, well done! I think as a next step you should look a bit more into routers themselves. You can flash them with an opensource os like openwrt [1] and run a chat (or some kind of communication) server on it so everybody connected to the same wifi can freely exchange data.

This way you can turn any wireless capable [2] machine into a small community network.

> great use case I've seen are college campuses where thousands of students connect to the same WiFi,

This is indeed a great use case. Right now you're only thinking about chat but its got more applications like semi-remote teaching,tests ,role calls etc. But (I think) its far easier to realize it if you work at the network level rather than at the app level.

Best of luck!!!!

[1] https://openwrt.org

[2] router, raspberry pi, laptop, your phone

Congratulations, this is an idea I’ve long sat on. I used to travel a lot on trains and planes, and always wished there was a way to break the ice with fellow travelers without looking like a psycho or annoying chatterbox (particularly early in the morning). There are additional challenges for those situations (bad connectivity), so I am not recommending to pursue that story, I’m just saying I think you had the right idea. Good luck!

I remember when Bluetooth first became a thing on phones people used use that for local chat (or just sending funny pictures). I kind of miss that about Bluetooth so I think this app idea is a stroke of genius.

Now I just get unsolicited dick picks via Apple AirDrop.

I remember comedians trying to turns airdrop into a comedy opportunity. They had to stop pretty quickly, for the same reason. Most of them now explicitly disable Airdrop before going on stage, if they have to work with iOS devices.

This Is Why We Can’t Have Nice Things, episode 18747401929283.

This is a neat idea! I’m traveling a lot presently so from my perspective two things that might be useful are:

- Make it really easy to exchange persistent contact info. Something like a 1-tap share of your phone number either to the group or to a specific person in the group.

- Scrape public WiFi databases like Wifi Map Pro for places travelers are likely to be (hotels and hostels) and prime the chat with local recommendations.

Does it work offline (i.e. without an internet connection)? The website and explanation here is sort of unclear.

He says there is a central server, so I guess not.

Could it be used as an sdk to pass small amounts of data around - think multi-player games....

I'm curious why you chose to make it a mobile app instead of browser based.

Would it be possible to build it such that, when I visit the site I'm automatically dropped directly into the local chat room for whatever wifi network I'm currently on?

That was my first thought as well, having read "try it out" before the jump... I have too many apps already to justify this now, but years ago I would have loved this for communicating with family members.

He apparently wants both source/outgoing IP and SSID to the same for each channel. Browsers have no access to the SSID.

Not sure why he wants both.

I suspect because public IP isn't the same thing as WiFi. You could have multiple public IPs on any WiFi network. Or even multiple SSIDs per public IP. Where as the SSID is more analogous with "WiFi" (at least in terms of what the average user might understand).

The problem with SSIDs is they're not globally unique. So you need some way of identifying one SSID from another with the same name. Hence why they store both.

To be honest, once you go the app route, the best approach would likely be ssid and MAC (or the phone ID). IP is way too volatile to be useful - what happens when the wifi network reassigns it to someone else?

I suspect that the vast majority of networks with multiple SSIDs also have multiple public IP addresses. I wonder how much he's storing and for what reason

This is neat! What were a couple of your biggest challenges when creating this?

Does the number connections to a router effect how many people can join? I think around 250 is the limit thought some have problems after 50.

Do you provide any privacy/security guarantees regarding the stored chats or user location data and access logs?

Do you intend to monetize this by making any of the information mentioned above available to third parties?

This, in theory, is really cool! Have you thought about making this into a work chat like app? I could totally see this being used at work with all my colleagues in the office.

Yeah, I've thought about creating a "Slack for every WiFi" but before I commit to adding more features, I'd love to collect more feedback. So try it out with your colleagues and let me know how it goes!

Clicking on "Google Play" button just flashes modal for a fraction of second. Firefox 66.

Hmmm, for my campus network it just says <unknown SSID> which isn't quite right.

Weird, do you happen to use a VPN connection?

Edit: it seems this issue only occurs with the android app, I will dig into this. Thanks for reporting!

yeah, I'm just trying it out right now on my college wifi. It also says <unknown ssid> and I'm also on Android.

I have identified it as an issue with Android 8.1+, will submit a fix to the Play store shortly.

Pie requires coarse location permission for accessing SSID.

Yup, that was the issue! I just launched a new version (1.9) which fixes this.

This is an awesome idea. The app is crashing on startup for me however at the moment

*edit Android version 9

Sorry about that, I just launched a new version (1.9) which will fix the crash.

Random people sending me messages just because we’re on the same WiFi is my personal hell

Don't install the app then. This isn't something you're automatically opted into just by owning a device that supported WiFi.

Why do you use an external server? Why not use UDP multicast or something?

The idea is to create a persistent chat so UDP and other forms of pairing are not suited to sustain the session.

What about for desktop?

Same question. Looking at the views of the OP it seems that the market for this product might be Slack for office spaces, then having a way to access through desktop would be quite essential.

I wanted something like that, but in the browser.

FireChat works over BT without any WiFi.

You can already chat with avahi.

And the “Dropbox is just ftp and rsync” Prize today goes to...

Presumably this can talk to the Apple messages App if you enable the Bonjour options.

this is cool!

That is topkeks to see you advertising your HN post on FB. I really gotta ask why though...

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact