Skip to content
← Back to projects

Write-up · Startup

MapivaMap-first social discovery

An app that opens on a map of what is happening around you, so finding people and things to do starts from where you are.

Co-founder and Dev Lead since August 2025 · beta planned for early 2027

Try the demo ↓

Mapiva is a startup I co-founded, and the app is still in development. This page is my own write-up. The demo below is a concept illustration written fresh for this site, with synthetic people and events. It is not the app's code, and nothing in it comes from the app, its users or its brand.

The problem

Finding something to do nearby is harder than it sounds. Events are spread across different apps, pages and group chats, and most social apps are built around a feed of posts rather than a place. When you are new to a city, or just free for an afternoon, the question you actually have is what is happening near me right now. A list is a poor way to answer that. A map is a good one.

A map of people is also a privacy problem. Showing where someone is, even roughly, has to be designed with care from the first day rather than patched on later.

The idea

Mapiva is a mobile app for iOS and Android that helps people discover what is nearby and connect. The idea fits in three steps.

  1. 1

    Start from the map

    The app opens on a map of the area around you, not a feed. What is close by is what you see first.

  2. 2

    See who and what is near

    People and events show up as pins, so you can tell at a glance what is within reach this afternoon.

  3. 3

    Connect

    When something catches your eye, you can find out more and connect with the people behind it.

Privacy from the start

Privacy is part of the design from the start, and two choices shape it most.

  • Age checks at sign-up, so the people on the map are old enough to be there.
  • Approximate locations for other people's pins. You can see that someone is nearby without seeing exactly where they are.

One simple way to make a location approximate is to snap it to a grid. The map is divided into fixed squares, and a person's pin is drawn at the centre of the square they are in, never at their real position. The demo below works this way, so you can try different square sizes and see what changes.

The grid has to stay fixed. If each request added fresh random noise instead, someone patient could collect many readings and average them back to the real spot. A fixed grid gives the same answer every time, so there is nothing to average. Moving your own pin around does not help either, because the most it can tell you is which square a person is in.

This shows the idea only. It is not a description of how the app implements it.

Try it: who and what is nearby

Concept illustration, not the real system. Every person, event and time below is synthetic, generated in your browser from a fixed seed. The map is a simplified sketch of inner Melbourne drawn for this page, so streets, parks and the shoreline are approximate. Nothing is stored or sent anywhere.

It is a Saturday afternoon and you are near Carlton. Move your pin, change the search radius and watch the nearby list update. Then switch on the grid to see where people really are and where their pins are drawn.

Synthetic data · simplified map

Synthetic clock: Saturday, 2:00 pm

Zoom 2 of 4

Click the map or use the arrow keys to move your pin. Hold Shift to move further. Press + or - to zoom.

  • You
  • Person, approximate
  • Event
  • Group of pins
People in range
17
Events in range
4
People shown to
500 m

17 people and 4 events within 1.5 km of you, near Carlton. People are shown to the nearest 500 m square.

Show
Pin precision for people

Nearby now21

near Carlton · 1.5 km

What the app would ask for

Illustrative only. A made-up endpoint showing the shape a nearby search could return for the view above. People come back with an approximate location and a rounded distance. Events happen at public places, so they come back with their exact location.

Request

GET /api/nearby?lat=-37.8001&lng=144.9671&radiusM=1500&kinds=people,events&page=1&pageSize=20

Response

{
  "status": 1,
  "message": "Success",
  "data": {
    "items": [
      {
        "id": "evt-0002",
        "kind": "event",
        "title": "Chess in the park",
        "location": {
          "lat": -37.80115,
          "lng": 144.96682
        },
        "distanceM": 120,
        "startsAt": "2026-10-10T04:00:00Z",
        "endsAt": "2026-10-10T06:00:00Z"
      },
      {
        "id": "usr-0012",
        "kind": "person",
        "displayName": "Lou C.",
        "approxLocation": {
          "lat": -37.7978,
          "lng": 144.9659,
          "precisionM": 500
        },
        "approxDistanceM": 300,
        "interests": [
          "gardening",
          "board-games"
        ]
      }
    ],
    "page": 1,
    "pageSize": 20,
    "total": 21
  }
}

Showing 2 of 21 items.

How it is built

Role
Co-founder and Dev Lead
Since
August 2025
Team
Small, part-time
Next
Beta in early 2027
  • React Native
  • Expo
  • Django
  • Rust
  • PostgreSQL
  • GitHub Actions

The app is built with Expo and React Native, so one codebase serves both iOS and Android. It runs on a backend built with Django and Rust over PostgreSQL, and changes ship through GitHub Actions.

My role

I co-founded Mapiva and lead its development. As Dev Lead I own the technical architecture and lead code review for a small part-time engineering team.

I also wrote the 2026–27 development plan, which sets the scope of the beta and the criteria it has to meet before release. I do all of this alongside my day job.

What's next

The team is working towards a beta in early 2027, with its scope and release criteria set out in the development plan.

Mapiva's code is private, so this page has no source links or screenshots. The demo is written fresh for this site.