DEV Community

Cover image for A small web app where people quietly appear on a world map
Digiwares
Digiwares

Posted on

A small web app where people quietly appear on a world map

I've moved around a lot. Finding information about a new city is easy- Google has everything. But finding people? That's weirdly hard.

So I built MapMates.

The idea

A map. You drop a pin. Others appear. That's it.

No signup walls. No algorithmic feed. No tracking. Just people, quietly appearing on a world map.

Who it's for

  • Digital nomads wondering who else is in Bali
  • Expats in Bangkok looking for other remote workers
  • Freelancers in Lisbon hoping to find a co-working buddy
  • Retirees in Portugal curious about their community

Tech stack

  • Next.js 14 (App Router)
  • Supabase (Postgres + Anonymous Auth)
  • Leaflet (maps)
  • Upstash Redis (rate limiting)
  • Tailwind CSS (styling)
  • Vercel (hosting)

How anonymous auth works

Most apps force you to sign up before doing anything. I wanted the opposite β€” drop a pin in 30 seconds, no email required.

Supabase has a neat feature: anonymous authentication. Users get a real auth session without providing credentials. If they clear their browser, they lose access β€” but for a casual "pin yourself on a map" use case, that's fine.

const { data } = await supabase.auth.signInAnonymously()
Enter fullscreen mode Exit fullscreen mode

One line. User is authenticated. No friction.

Rate limiting

To prevent spam, I added rate limits using Upstash Redis:

  • 1 pin per user (editable)
  • 3 connection requests per day
const ratelimit = new Ratelimit({
  redis: Redis.fromEnv(),
  limiter: Ratelimit.slidingWindow(3, "1 d"),
})
Enter fullscreen mode Exit fullscreen mode

What's next

  • City pages (mapmates.io/bangkok, mapmates.io/lisbon)
  • Email notifications when someone wants to connect
  • Let anyone create their own community map

Try it

πŸ‘‰ mapmates.io

Zoom in. See who's around. Maybe drop a pin.


Would love feedback from the dev community. What would you add?

Top comments (0)