Adam Stroud - Business Co-Founder
Brian Boyko - Technical Co-Founder
Technology Overview
Calendar Apps:
Help you organize appointments
Meetup.com:
Helps you find existing events with strangers
Facebook.com:
Helps you connect and communicate with your existing friends.
Freety.me keeps track of your groups of friends, coordinates available times, and automatically finds the times it's most convenient for you to hang out.
It goes one step further and finds people with similar interests in your area and suggests convenient times and places to meet.
Adam's a board gamer, and he wondered: How can board gamers organize their game nights? (Had the idea since 2008, but didn't have the coding background.)
Brian recognized this as a specific case of a general problem: It's hard to organize events among your friends, and to find new friends as an adult.
We thought there was demand in the market, but that no one had found it feasible to build the product because it was difficult to scale.
Each user * every other user * all possible times * all possible interests * all possible locations * all other possible locations
Brute Force:
O(n^6)
Using a graph database instead of an SQL database allows you to skip any possibilities that will never match the other criteria, eliminating large parts of the graph.
With Graph:
O(n^6/k^5)
not quite linear, but similar in practice.
I had to learn Neo4J's graph-query language, "Cypher" and there's still a great deal of optimization that needs to be done, but we were able to simulate 100,000 users with acceptable speed.
Neo4j Database
(Relationship Data)
Mongo Database
(Bulk Data)
Node.js/Express.js
BCrypt for Auth
Twilio SMS Integration
Sendgrid Email
React/Redux (chosen for eventual conversion to React Native for an "app" version.
Material-UI for pre-designed UI elements
Webpack
Immutable.js
Freety.me is being developed by a solo developer (Brian) and so many of the "best practices" for team coding falls by the wayside.
The current goal is to get a working prototype up and running as quickly as possible (best practices be damned).
This is to find out as quickly as possible where our "on-paper plan" needs to be changed before building a final product.
Once the prototype has been successful, we will enter a feature freeze and refactor both the backend and the frontend