Inspiration

Theres are two things that we desire in life, money and safety. We would like to maximize both, and in order to maximize safety we have to minimize risk.

What it does

The app allows users to build their own portfolios of stocks and determine the amount of risk associated with each security. One of the guiding principles of our application is that risk is not inherently bad. Risk, when well-managed and decisions are made well, leads to the biggest rewards. The app allows users to make wise choices surrounding their money and assets, by accessing measurements of risk in a quick and convenient interface for end users.

How we built it

The primary backend was written in JavaScript. This API handles the majority of the application's business logic, including user authentication, portfolio management, and risk calculation. We used Prisma as an ORM to interface with PostgresDB, our data store for users and portfolios. We utilized Elasticsearch to enable search of our dataset. Another API was written in Python to fetch data from Yahoo Finance and perform a select number of calculations. Finally, we created a mobile app using React Native as the primary interface for end users. Both of the APIs and the database were deployed using Railway.app, and Elasticsearch was hosted with Elastic Cloud.

Challenges we ran into

The first issue we encountered was data access. There are lots of APIs available for financial data, however many of them are behind paywalls or required manual human intervention to provide us with access. Fortunately, we found datasets which worked for us, even though our final data source meant that we needed to write a separate API in Python. In addition, there were a number of React patterns and habits that we've picked up that may not be best practice or have direct equivalents in React Native. There were a number of libraries for charts that are compatible with React DOM but not React Native. Finally, we had a number of issues with developer environments for React Native. A difference in Node version, global package installs, and other trivial typos led to a significant number of hours lost to debugging, when the solution was a single dependency downgrade or autocorrect away.

Accomplishments that we're proud of

We wrote and deployed 2 APIs, built a mobile app, and worked around a number of technical difficulties along the way.

What we learned

For a lot of us, this was our first brush with mobile development and React Native, and/or backend development. We utilized tools new to us such as FastAPI and Poetry that make it faster and easier to write Python web applications.

What's next

Due to time constraints, we were unable to build all desired features, however the biggest feature we wanted to implement was support for other assets, including bonds and real estate.

Built With

Share this project:

Updates