A fond memory of my college years was playing soccer and the playful banter it brought. Scheduling games, and unavailability of soccer pitches meant game day always had quite a bit of shuffling and rescheduling. Also we couldn't objectively agree over final scores, or what team had the better record, which led to quite a lot of yelling contests. Good times.
What it does
Teammate makes it easy for anyone to create and manage teams for their favorite sports. With an extremely intuitive design and the following awesome features:
Events:
Organize, plan, and schedule team events. Team members can RSVP to events, see the event on a map, and get directions at the tap of a button. Events can also be made public for anyone to discover.
Instant Messaging:
Instantly communicate with team members to get the information you need, when you need it.
Shared Gallery:
Share team photos, action poses, or a video of the game winning shot. Everyone can contribute their photos and videos so no one misses out.
Games:
Keep the score, track stats and earn bragging rights. Compare teams and players head to head, and aggregate state to see who's the GOAT.
Tournaments:
Organize tournaments across teams or individuals for the ultimate bragging rights.
How we built it
Teammate was built primarily with MongoDB in a MEAN stack. In fact, a lot of Teammate's core features would have been difficult if not impossible without MongoDB for the following reasons:
Geolocation Search:
The map powered public event search feature, depends wholly on MongoDB's geospatial querying. This is what makes panning the map and having events pop up provide such a satisfying user experience.
Team and User Search:
This takes advantage of MongoDB's excellent partial indexing to make it very easy to search for teams with the generic names, or restricted screen names without having to use Search as a Service providers like AWS Elastic Search and the like. It definitely was robust enough for our needs.
Head to Head and Aggregated Stats:
Both these features are powered by MongoDBs aggregation pipeline, which again is a huge reason of why they were relatively easy to build. Each stat for any user can simply be aggregated to see who's scored the most goals across different teams, or even for the same team. The same can be said for comparing teams or users head to head.
Tournament Standings
Different team sports have their way of calculating standings for a team in round robin (League format with home and away games) tournaments. This means the data for each team, whether it's a goal difference column for soccer or PPG for basketball, has a certain element of dynamism. MongoDB is perfect for this as the column counts for each ranking metric vary for different sports, yet are still very structured within the constraint of a single sport. This is something that is extremely hard to model with a traditional relational database and it's why the SQLite backed Android app, has a local copy of all model data for quick retrieval except tournament standings.
Challenges we ran into
We initially built the app on Google's App Engine, but ran into issues when trying to integrate web sockets for chatting as App Engine didn't support websockets at the time. It also was a tad pricey. We ended up going one level of abstraction lower and building on Google Compute Engine instead. Websockets work great and it's a lot cheaper.
Marketing is another issue we've had. None of the team has a significant social media presence so it's been difficult getting the word out and sharing our app with the world, especially on a constrained budget. Teammate is a fun project, but it is just a side project and we all have full time jobs.
Accomplishments that we're proud of
Actually shipping version 1.0 in a little over a year! None of us had any real backend experience when we started. To build the entire full stack of the app on our own, and add our expertise as mobile developers was a really, really fun experience and it's been very fulfilling.
What we learned
Javascript, especially on the backed with Node.js, really isn't the devil. This is coming from a diehard "Kotlin is just okay" Java fan.
What's next for Teammate
Teammate was a side project that just kept growing and growing with time as a time sink for a couple of bored developers. It'd be nice if it really took off, but given our marketing inexperience and how hard it is to launch a startup it mostly serves as a portfolio for a couple of devs to show our capability across the full application stack.
Today, it exists as a full featured app in the Google Play Store and Apple App Store, as significant sources of pride. If you wanna help us do bigger things, or really like the project, be sure to drop us a line!

Log in or sign up for Devpost to join the conversation.