Finance Dash Plan

Lately I’ve been looking into financial statements of a few companies and thought — wouldn’t it be nice to have a place where I can track several of them in one go? That sparked the idea of building a small experimental website.

Before getting my hands dirty with code, I used ObservableHQ to check if the metrics I need are available, and to get a rough idea of how the charts might look.

Ps: ObservableHQ is an interactive notebook platform that makes it super easy to visualize data on the fly.

For the data source, I went with FMP. They offer a wide range of finance-related datasets and APIs. The free tier already covers enough for a tiny personal project like this.

After pulling some sample data in ObservableHQ and confirming that FMP has what I need, I started sketching out the dashboard plan. The goal was to first get a chart showing on a Cloudflare page, then gradually refine each chart. I also figured this would be a good excuse to try out Cloudflare Pages and Workers.

After a few back-and-forths with some AIs, I ended up with a pretty solid launch plan:

Project Overview

  • Frontend: React with react-chartjs-2 for rendering charts.
  • Middleware: Cloudflare Worker to process and serve data.
  • Hosting: Cloudflare Pages for the frontend, Cloudflare Workers for the middleware.
  • Data: Start with static JSON files (downloaded from FMP/TWSE), then transition to live APIs.

Some quick tips I picked up:

  • Start Small: Begin with AAPL, then bring in TSMC for fun.
  • Version Control: Commit after each step (git commit -m "Step X: Description").
  • Testing: Use console.log or Postman to check if Workers return the right stuff.

The whole thing is split into 4 phases, each with a handful of tasks:

Timeline & Milestones

  • Day 1-2: Phase 1 (Steps 1-5) – Basic React app with static JSON on Cloudflare Pages.
  • Day 3-4: Phase 2 (Steps 6-7) – Worker serving JSON, frontend fetching it.
  • Day 5-6: Phase 3 (Steps 8-10) – Add TWSE JSON and fuse data.
  • Day 7+: Phase 4 (Steps 11-12) – Switch to live APIs and polish things up.

If the data is prepped ahead of time, following these steps should be pretty smooth. That said, it all started with just a tiny lonely chart sitting in the middle of the page 😅