While many chat apps provide great functionality, many come up short when physical distance is an important factor in char participants. Therefore, there is a special niche of geolocation-based chat rooms that could be filled.

What it does

Pinchat is a chat service, which operates off of geolocation. Users are able to create chat rooms that are tied to GPS coordinates, which are viewable on a map. Users who are in close enough physical proximity may then join these rooms, and chat with others in the area. Pinchat also offers a heatmap visualization of real time message activity.

How I built it

The pinnit service is split into backend and frontend services. The back end is based around a Python Flask, RESTful API that is connected to a MongoDB instance. The MongoDB instance is responsible for storing user, message, and room data. The API allows for the HTML/JavaScript frontend to make calls to retrieve information about nearby chat rooms, and facilitates the live viewing and sending of chats via web sockets. The front end utilizes the geolocation API provided by the native browser, and OpenStreetMap for UI components.

Challenges I ran into

Creating a robust schema for both the front and back end to communicate over the web socket layer proved to be a considerable challenge.

What's next for Pinchat

  • UI overhaul
  • User token storage, so users may leave a room and come back later
  • Add the chat's history in during join, so a user can view the full chat history
  • Add image attachments
  • Add read reciepts
  • Add admin controls to chat rooms
Share this project: