
Show HN: Turn any WiFi into a persistent group chat - melvinmt
Try it out on your WiFi: <a href="https:&#x2F;&#x2F;tapchat.com" rel="nofollow">https:&#x2F;&#x2F;tapchat.com</a><p>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.<p>After leaving my job earlier this year, I decided to work on a simple chat app that solves this problem, by simply opening a <i>persistent</i> 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&#x27;ve seen are college campuses where thousands of students connect to the same WiFi, and who can now all chat with each other. I&#x27;d love to see what else this can or will be used for.<p>(Spoiler alert: the app doesn’t bother with mesh networks)<p>Feedback is much appreciated! (the gentle kind)
======
youeseh
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.

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

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

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

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

~~~
laumars
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]

------
OkGoDoIt
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?

~~~
melvinmt
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](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.

~~~
fiatjaf
You could use MAC addresses also, maybe.

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

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

------
oneowl
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](https://openwrt.org)

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

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

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

~~~
Aromasin
Now I just get unsolicited dick picks via Apple AirDrop.

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

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

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

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

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

------
powerset
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?

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

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

~~~
toyg
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?

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

------
chachachoney
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?

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

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

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

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

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

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

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

~~~
gdrift
Pie requires coarse location permission for accessing SSID.

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

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

*edit Android version 9

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

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

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

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

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

------
TejasGupta
What about for desktop?

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

------
fiatjaf
I wanted something like that, but in the browser.

------
bayareanative
FireChat works over BT without any WiFi.

------
purpleidea
You can already chat with avahi.

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

------
nittanymountain
this is cool!

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

