Inspiration
I have always wanted to build a project that combines both my technical and financial interests. The inspiration for this challenge stems from the fact that there are many investment apps like Robinhood, Vangaud, etc that exist but it can still be a challenge for users to really understand the breakdown of their portfolio. Additionally, my main goal was to not only create an app with reliable real-time data but also have to spend no money on financial APIs or deployments.
What it does
This investment portfolio app allows users to first sign into their gmail account. Then, on the "Investments" page, they will be allowed to add shares from a list of over 5000 supported companies. They will be prompted with a form in which a user enters the ticker (i.e. AAPL) and the amount of shares he/she holds in that company. Additionally, there is a "Companies" page where users can search amongst all supported companies to broken down by industry and sector.
How we built it
The project was built with TypeScript and relies on frameworks like Next.js for ease of deployment and TailwindCSS for styling. The financial data comes from a free API known as SimFin API which includes both stock performance data and a list of over 5000 companies. For user authentication and information storage, I utilize Firebase Auth and Firebase's Realtime No-SQL Database. This provides a secure and reliable method for authentication and storage. For the frontend, I utilize libraries like recharts to build out stylistic graphs and pie charts. Finally, the app is deployed via Vercel and is publicly accessible.
Challenges we ran into
The biggest challenge was easily finding a free API and utilizing it thoroughly. Firstly, SimFin's API was inconsistent on the free plan (it did not provide information for every day requested only a few throughout the week). Additionally, the biggest challenge was that it imposed a rate limit of 2 calls per second. For me, I struggled initially coming up with a procedure to sequentially call the API in a way that would not hinder the user experience. Ultimately, it required lots of trial and error but was very rewarding to fix.
Accomplishments that we're proud of
For me, I was really proud to enact what was once an idea in my head to something tangible. It was truly a rewarding experience to work through each challenge and become one step closer to my goal. Configuring features like authentication, user storage, and data visualization was a difficult but fun challenge that taught me a lot more about building user-centric applications.
Additionally, I was very happy that I didnt have to spend any money on resources.
What we learned
I think the most important thing that I learned was that you have to be feasible with your expectations and that it's okay to fail during the process. Initially, I had planned for many features within the scope of the competition, but I failed to realize how much time certain features and debugging would take up. I was able to prioritize features that were more important, which is a crucial skill when deadlines are imposed.
What's next for Investment Portfolio Manager
- Customizable and Draggable widgets - I really hope to allow for more stylistic visuals involving data like stock volume, derivatives, etc. Additionally, I think it would be really cool if a user could drag and drop widgets and create their own dashboard
- Delete/Change stocks - because I did not have time I was unable to allow users to update/delete share information but it is something I hope to fix in the future.
Built With
- figma
- firebase-auth
- firebase-realtime-db
- next.js
- simfin-financial-api
- tailwind-css
- typescript
- vercel

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