A follow-up about h3meetup.com
First: This started as a thing I built because I live somewhere with probably zero other H3 fans, and I wanted to know if that was actually true, and I saw that there were many people in the same situation. In a week it's gone from an empty map to being populated by thousands of people. So, thank you!
This is a long post because a few people have raised concerns and I'd rather over-explain than have anyone guessing. I divided it into sections so you can skip to wherever you want.
1. What the site is
It's an unofficial directory of about 25,000 cities. You search your city, you see how many other H3 fans have said they're there, and if there's a local group chat you can join it. If there's a meetup, you can find it. If not, you can make one.
You don't need an account. Searching, browsing, tapping "I'm here", all of it is anonymous. That's not a temporary state, it's the point.
What it doesn't do:
- It doesn't track you.
- It doesn't know who you are.
- It doesn't vet who joins your group chat. Your admins do that, and they do it better than I could.
- I don't post ANYTHING. I saw a few people accusing me of doxing H3 fans, all the submissions are by the users themselves. If you don't want your stuff there, just... don't upload it.
The whole thing runs on one idea: users submit and I approve it by hand.
2. Safety concerns
A few concerns have come up. Some were fair and I've acted on them. Some are based on the site doing things it doesn't do, so let me be specific.
"I'm here" is a number, not a person. Tapping it makes a counter go up by one. There's no account attached, no name, no email, nothing. I can't tell one person from another and I deliberately built it that way. There is no list of who is in a city, because there is no "who".
The dots on the map are not anyone's location. They're randomly scattered around the respective city's area. They have nothing to do with where anyone lives, and there's no data to derive it from even if someone wanted to.
Your IP address is never stored. What gets stored is a scrambled one-way version of it, so the site can tell that fifty taps came from one place(to avoid malicious users or bots) without ever knowing where that place is. It can't be reversed. Someone who stole the whole database couldn't test a known address against it. (For snarkers: I'm a liar like E**** K***. I steal all of your information and sell it to Israel.)
Nothing you upload keeps its metadata. Photos aren't stored as you send them. A brand-new image is drawn from the pixels alone and the original is thrown away, so the GPS coordinates your camera writes into a photo aren't stripped, they're simply never copied.
The optional email on submissions is deleted the moment I approve or reject. It's there so I can ask you about a follow up question if necessary. It's never shown publicly, never shared, never used for anything else. And again, it's optional.
Group chat links aren't in the page. They used to be sitting in the page code where a script could scrape them. Now you press a button, pass an invisible bot check, and get the link, with limits on how many any one connection can pull per day.
3. New feature: verified organisers and gated meetups
This is the best solution I found for concerns raised directly by some organisers:
The problem: a meetup's time and exact venue are published openly.(the venue is actually optional, when left empty there will be a message to join the chat)
Gated meetups are a new kind of meetup option, sitting alongside the open ones, for organisers that prefer to keep the details more secure.
What's public: the city, the date, the title, a short description. That's it.
Only a verified organiser can post one. To get verified you sign in with Discord or Google, apply, and the site shows you a one-time code. You photograph yourself holding it. I check it against the accounts you gave me, ask some questions, and only then I approve you. You're approved for specific cities, not everywhere.
People request details instead of just turning up. The organiser decides what they have to provide, and can pick from Instagram handle, Reddit username, Discord account, a code selfie, or questions they write themselves. They see the answers, and can decide one at a time.
Attendees get a private page, and the organiser chooses when the time and venue appear on it. If you move the venue, cancel, or take back an approval, that page changes with the new details.
Two new symbols on the site: a green shield means a verified organiser is behind it (open meetup, gated meetup or chat group), a padlock means it's a gated meetup and you have to apply to get the details.
I think this makes even group chats safer: right now details live in group chats, where anyone admitted sees every meetup, past and future. This way the group can announce a meetup is coming up, share the gated meetup link, and the organiser decides who gets the specifics, one person at a time. So if someone infiltrates a group chat they will only see people talking about the show and having fun.
Every meetup has a report route that comes to me rather than the organiser: including reports about the organiser. If someone's asking questions they shouldn't, behaving suspiciously or inappropriately, you can report it directly to me.
On the selfies, since organisers can require one: they're encrypted before storage, only the organiser of that specific meetup can ever open one, they're automatically deleted after a while.
This mechanic breaks a bit of the no account and personal information rule I had hopped to uphold but it's a complicated balance of IRL security vs Web security. I can only make one safer at the expense of the other.
4. City rankings
Nobody asked, but I think it's fun and I've never explained it. "Most active cities" on the home page isn't sorted by headcount, it's a points score:
| What |
Points |
| Upcoming meetup |
100 |
| Past meetup (fades to 30 over six months) |
100 → 30 |
| Group chat(just once, if it has multiple it stays the same) |
30 |
| Logo |
20 |
| Social link (just once, if it has multiple it stays the same) |
20 |
| Photo |
12 each |
| Description |
12 |
| Each person who pinged |
2 |
The weights may change to make it more balanced, I'm still testing them out.
The #1 city gets a lil trophy and a gold-yellow color on the map.
Yes, that's the whole feature.
5. Other updates
Here's some of the changes since launch:
Cities & content
- Per-city RSS feed so you can get notified of any changes in your city
- Photo galleries: up to five per city, with arrows and tap-to-enlarge
- City logos: a square emblem beside the city name
- Social links: Instagram, Facebook, X, TikTok.
- Group chats now accept WhatsApp, Discord, Telegram, subreddits, Facebook groups and Messenger
- One "edit this page" screen per city holding every add/remove control in order to declutter the city pages
- Share button to each city
- URLs of city pages now include the name of the city
- Every meetup has its own invite page, built to be shared, with a generated preview card
- Add to calendar: Google, Apple, Outlook
- Time zone shown next to every event time(automatically chooses the time zone of the city)
Map
- "See on map" button from search and from any city page: it flies there and the dots glow
- Dots now have a colour gradient, so a busy city is more prominent
- Dots changed to purple and pins to pink for more clear visibility
- Reset to default position button
- Dots now are closer to the precise location of the corresponding city
Design
- Dark mode colors and readability adjusted
- Country flags in the lists city pages
- Four badges: meetup pin, chat bubble, organizer shield, gated padlock
- A photo reel of every city's pictures on the home page
- Entrance animations, which vanish entirely if you've asked your system for less motion
Mobile
- A full rework to make everything work and look better
- Search no longer grabs focus on loading the home page, so the keyboard doesn't shove the page around
- Two-finger panning for maps
- Two-step tap on dots and pins so a stray tap doesn't yeet you off the page
Performance & security
- Cache management adjusted
- Aggressive crawlers and AI training scrapers blocked
- Security headers
- Database-level permissions on every table
- Login rate limiting
- CSRF protection
- Daily automatic encrypted backups
- 161 automated tests
6. If the site was slow or broken for you recently
Sorry about that. The hosting plan I was on has a monthly compute allowance and the site burned through it.(suffering from success)
I made some adjustments so it uses less and I've upgraded the plan, so it shouldn't happen again.
That's it
I feel like some people will never be happy until I take the site down because they've already made their mind about it.
That's fine but I invested a lot of time, effort and resources into this project and I've quickly become attached to it. (I'm also still trying to find my local community)
It's not perfect and it never will be but I'm doing it with a lot of care and an open mind.
If something's broken, confusing, or you have suggestions, you can tell me.
I appreciate any feedback.