Spring 2018

Propel(x) is an angel investing platform focused on funding early stage companies that are built around a groundbreaking scientific discovery. We built a cross-platform mobile app written in React Native that allows investors to easily browse and follow startups they're interested in.



Introduction
Propel(x) is an investing platform that allows investors to browse and fund promising startups. Using the platform, investors can view startup pitch decks, ask questions about the startups, view detailed information about the startups, and commit to investments.
Problem Statement
Propel(x) originally had a desktop-only interface and were interested in exploring different ways of communicating information to their users. They specifically wanted to target users who were browsing on-the-go on their phones, and to get them interacting with the platform even when they weren’t near a laptop.

Our job was to build a mobile application that gives users the ability to access certain core features of the desktop interface. This includes a Tinder-like home view where investors can swipe through startup cards. Pressing on startup cards they are interested in brings users to an expanded view that allows them to access detailed startup information. In addition, users are able to save startups for later and view them in a list.
Implementation
The mobile app was written in React Native, and we used a wide variety of React Native packages to get the UI components needed for the app. To hook our frontend up to Propel(x)’s backend, we were given several endpoints to work with, which gave developers the opportunity to work with REST and figure out how to parse endpoint responses.
Technical Challenges
One of our biggest challenges had to do with managing state information. We decided not to use Redux to manage state for a few reasons. For one, the app is relatively lightweight in terms of the information we have to pull from the backend. Additionally, every single developer on the team was new to React Native, and with only 10 weeks or so for the project, I decided to have them focus on learning the core technology and not have to worry about Redux (which has a bit of a learning curve). However, this meant that we did not have a central store of information and a single source of truth for everything happening in the app, and would have to have individual pages communicate changes in state to each other in the frontend. We created a workaround by setting our source of truth to be a frontend component, which acted as a central store, making GET and POST requests to the backend, and sending and receiving information to and from the individual pages in the app.

Another challenge was figuring out how to implement swiping. Most existing React Native packages for swiping were a little finicky and didn’t fit our use case well. We had to apply some creative styling and fixes to existing packages to get swiping to function the way the client wanted it to.
Key Takeaways
The Propel(x) project was a wonderful learning experience for everybody involved—the client enjoyed the opportunity to build relationships with college students, the developers all picked up new skills and grew as engineers as they tackled challenge after challenge, and I gained a lot of insight into what it means to lead and manage a team. In retrospect, there were a few things that could have been done better (maybe it would have been worth it from an engineering and code style standpoint to invest time into learning Redux, or maybe we could have worked with Propel(x) to develop a UI equally as interesting as swiping but not as finicky and difficult to wrangle together), but overall the partnership was successful and we were able to deliver on all the functionality that we promised! At the conclusion of the project, Propel(x) hired a mobile engineer to take over the app development, and hopes to release a production version soon.