DEV Community

Cover image for I'm Building an App That Connects You with Strangers from Anywhere in the World
Alpha
Alpha

Posted on

I'm Building an App That Connects You with Strangers from Anywhere in the World

The Idea

Most people will never visit most places on Earth.
But everyone can have a conversation.

That thought sparked Meridian – an app that connects you with random people from any country, in any language. Think Omegle meets Duolingo meets a digital passport.

How It Works

Pick a place – Tap anywhere on the map
Get matched – Connect with someone who actually lives there
Chat in any language – Real-time translation handles the rest
Collect stamps – Build your digital passport with every conversation

The Tech Stack

I just shipped the waitlist landing page and wanted to share the stack:

Backend API

  • .NET 8 Minimal APIs
  • PostgreSQL on Render
  • Entity Framework Core for data access

Frontend

  • Vanilla HTML/CSS/JS (no framework needed for a landing page)
  • CSS custom properties for theming
  • Intersection Observer for scroll animations

Infrastructure

  • Render for hosting (API + static site + database)
  • Auto-deploy from GitHub

Some Code Highlights

Spam Protection
Instead of adding reCAPTCHA (which hurts UX), I implemented invisible protection:

// Honeypot field - bots fill it, humans don't see it
if (!string.IsNullOrEmpty(request.Website))
{
    Console.WriteLine($"🤖 Bot detected: {ipAddress}");
    // Return fake success to not tip off the bot
    return Results.Ok(new WaitlistResponse(true, "Success", 999));
}
// Rate limiting - 3 signups per IP per hour
if (rateLimiter.IsRateLimited(ipAddress))
{
    return Results.BadRequest(new WaitlistResponse(false, "Too many requests"));
}
Enter fullscreen mode Exit fullscreen mode

UTM Tracking
To see which platforms drive signups, I capture the source from the URL:

const urlParams = new URLSearchParams(window.location.search);
const utmSource = urlParams.get('utm_source') || 'landing-page';
// Later, in the fetch request:
body: JSON.stringify({
    email: email,
    source: utmSource
})
Enter fullscreen mode Exit fullscreen mode

Now I can share links like mysite.com?utm_source=devto and track conversions by platform.

Lessons Learned

  • Render's free tier works great for MVPs, but the cold start (50+ seconds) is rough
  • Proxy IPs are tricky – I had to use X-Forwarded-For header for rate limiting
  • Honeypot fields are surprisingly effective against basic bots
  • Vanilla CSS with custom properties is all you need for a polished landing page

What's Next

  • Building the core chat experience with SignalR for real-time messaging
  • Integrating translation APIs
  • Designing the passport/gamification system

Try It Out
I'd love early feedback! Join the waitlist:

👉 https://meridian-landing.onrender.com?utm_source=devto

And if you're curious about the code, drop a comment – happy to share more details.

Building in public. One commit at a time.

Top comments (0)