prerakhere / investing-journal-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Investing Journal

Check it out here.

Contents:

Idea behind this app

People get into 'stock tips' and invest in companies that they don't understand. What actually should drive their investments is their own investment thesis (at least if they are investing for a longer term) of the investee companies and their future developments that will generate revenues and profits. Through this app, one can journal out why they invested and are currently investing in companies by tracking them in a timelined manner.

Terminologies - What are vaults, thesis, thesis points, attachments?

  • Vault: A fancy equivalent of a company. So, Company's Name = Vault Name. Company's Sector = Vault Sector.
  • Thesis: A timelined collection of thesis points that essentially reflects the developments in a company.
  • Thesis Point: For example, in the vault of Reliance Industries, one can have a thesis point like: Partnered with Future Retail that would increase (some metric here).
  • Attachments: Files (PDFs, images, word documents, PPT files) that are a part of an investor's thesis for a particular thesis point. Continuing with the example above, attachments may include the official corporate announcements that investors get on stock exchanges websites about the partnership.

Performance Audit and Optimizations

Measure first

  • Rule of thumb: If performance of an application is to be improved, it has to be measured first.

Pre-Optimizations

  • Below is a lighthouse audit snapshot of the app which takes a good 5-6 seconds to load. pre-optimizations-pagespeed-test

Post-Optimizations

Code Splitting

  • Introduced code splitting which enables fetching the required javascript on the fly, thus reducing the initial JS bundle size.
  • Pre Code Splitting

nw-before-code-splitting

  • Post Code Splitting

nw-after-code-splitting

  • A Lighthouse audit post code splitting apparently reveals some improvements in metrics.

lighthouse-after-code-splitting

Text Compression

  • Enabled compression (gzip) of text based resources like CSS, JS so as to minimize total bytes to be transferred over the network.

  • Below snapshot of the network tab shows original vs compressed sizes of the files. after-text-compression

  • A significant bump in Lighthouse performance score is observed post text compression. lighthouse-after-text-compression

What's Next?

  • There is a whole lot of room for further optimizations:

pagespeed-suggesstions-stage-2

  • Until next time!

Running on local machine

  • Clone/download.
  • Install dependencies in both client and server folders
  • start client and server with suitable start scripts and on suitable ports
  • You won't be able to use MongoDB database and AWS S3 bucket storage unless you create and set them up. Refer documentations/youtube videos for that.
  • If you made it till here, then either make .env file for the keys or enter the keys seperately at required places.

Bug Reporting

  • Feel free to raise issue/create a PR in case you find some bugs. Much appreciated🙌

About


Languages

Language:JavaScript 98.5%Language:HTML 1.4%Language:CSS 0.1%