Alt text

Inspiration

A lot of people in India are not aware about the various investments options that are available to them. In addition to that, people are many a times bad at managing their assets. These two problems inspired us to come up with the solution finNourish

What it does

finNourish provides its users with recommendations for investments and deposits depending upon the preferences that a user provides during the sign up procedure. There are six categories of investments that a user can choose from. The categories are:

  • Equity Mutual Funds
  • Liquid Mutual Funds
  • Short Term Mutual Funds
  • Arbitrage Mutual Funds
  • Debt Mutual Funds
  • Dynamic Mutual Funds

We also provide recommendations for two types of deposits:

  • Recurring Deposits
  • Fixed Deposits

If the users want to know more about the type of fund they have chosen , for eg. Equity Mutual Funds, then they can choose to view information regarding the same by clicking on the button provided just above the listings which will open up the information modal.

Users can update their preferences at any time as per their wish.

Another important component of our project is the Budget Tracker. Users can update their incomes and expenses whenever they want. Following this they can launch our budget tracker to view and analyze their sources of income, categories of expenses, monthly savings and cumulative savings after each month.

How we built it

Our Tech Stack:

  • Programming Language: Python
  • Frameworks Used: Flask Framework, Dash Framework
  • Database: PostgreSQL
  • Hosting Service: Heroku
  • Front End: HTML, CSS, Bootstrap

JavaScript and Jinja templating have also been used in this project.

Important modules of our project:

  • Database: PostgreSQL (an add on from Heroku) has been used for our project.
  • Data Scraper: We developed a scraper using python to collect data about various investments options and deposits options which in turn saves this data in our PostgreSQL database.
  • Flask Application: The entire web application is rendered using Flask Framework. All the routes of the web application were planned systematically including sign up, user authentication and interaction with the database.
  • Dash Application: We developed a budget tracker using the Dash framework and embedded it into our Flask App under a separate route which was protected with user authentication. The dash app uses the PostgreSQL database to query the income and expense data of the authenticated user and shows the necessary visualisations.

Flask-WTF was used to create the various forms that have been used in the project. A very crucial library for our project is Flask-SQLAlchemy which has been used for interacting with the database.

Challenges we ran into

There multiple challenges we faced while completing our project. A small account of them is as follows:

  • Fast Updating of the Database Using Scraper: In order to update the table consisting the list of all available investments and deposits, we needed to ensure that our scraper is able to access our database fast and efficiently without causing any server errors.
  • Integrating Flask and Dash Together: The budget tracker has been made using Dash Framework which uses a Flask server under the hood. During the development process, we developed our Flask app and Dash app separately. Once they were both ready, we had to embed the Dash app into the Flask app with our Flask app being the server for the Dash app.
  • Retaining User Context for Embedded Dash App: After we had embedded the Dash app into our main Flask app, we ran into the problem of retaining user context. There were clashes arising in terms of which user is currently authenticated. This was solved by protecting it's route with the context of the authenticated user.

Accomplishments that we're proud of

There are a number of milestones we achieved during the course of developing this web application.

  • User Interface and Experience: We were able to make the UI/UX of the web app responsive and elegant with the help of JavaScript, CSS and Bootstrap.
  • Integration of Flask App and Dash App: There aren't much resources and documentations available online to guide a developer through the process of integration a Flask app and a Dash app together the way we wanted to. So we did a lot of researching and troubleshooting on our own to make the integration successful.
  • Hosting on Heroku: We were able to successfully deploy our app n Heroku which helped us in sharing the app with few of our peers and test it out thoroughly to troubleshoot any unseen issues in the application.

What we learned

  • Various types of investment options and how they work, their return rates and other historical data about such funds that were available in India.
  • Flask framework
  • Using JavaScript to make the elements of a webpage responsive.
  • Lxml library to scrape data from a given webpage.
  • Dash framework and Plotly using which we were able to create meaningful visualizations from the given data.
  • Integrating dash and flask app together.
  • Hosting an application on Heroku
  • Using the PostreSQL add-on of Heroku for our application

What's next for finNourish

  • Integrating data of various other financial instruments like stocks, bonds and how the User can take advantage of such financial instruments.
  • Educating the users about various tax benefits associated with various financial instruments.
  • Enabling the user to track a particular set of stocks or bonds based on his/her preference or previous investments.
  • Integrating the app with bank account so that the income and expenses of the user will be automatically updated in the budget tracker making it easier for the user to track his/her money.
  • Giving investment recommendations based on his/her asset value at a given point of time.
Share this project:

Updates