Ship it beside the watchlist
One repository, one deployment, two tools. This lesson makes them one product rather than two pages that happen to share a domain.
Two routes, one application
/ your watchlist
/screen your screener
Nothing new to deploy: same repo, same environment variable, same host. That is the return on the rebuild, arriving.
Add navigation between them, and make it the smallest possible thing — two links. A tool you use alone does not need a navigation system; it needs to not be a dead end.
The join that makes them one product
Here is the feature worth building, and it is small: from a screen result, add to watchlist.
A screener answers "which ones deserve attention". A watchlist answers "how are they doing". The natural motion is from one to the other, and one button expresses it. Without that button they remain two tools; with it they become a workflow you actually use.
Notice what it requires: the screener writes to the same stored list the watchlist reads. Which means you need to agree on one storage key and one shape — and you will discover whether your storage from course 1 was tidy or accidental. If it turns out the watchlist stores strings and the screener wants objects, that is a real design decision arriving late, which is normal.
Re-run the review before you ship
This is the feature pass from lesson 1 of unit 3, and it is due now.
Leaks: does the screener proxy drop api_token, clamp limit, and return only what the table needs? Cost: how many calls does each page cost, measured not guessed? Lies: run the five questions across every numeric column. Failure: what does each page show with no key, no results, a bad filter?
Then the check that actually verifies the whole course: open the deployed site, open the network tab, and confirm no request goes to eodhd.com from the browser. Both pages. The screener is new code with a new proxy route, and this is the only way to know it behaves like the old one.
Your CI key-leak scan from course 1 keeps running on every push. It is checking this repository too, at no extra effort — which is what a good safety net does.
Same licence, sharper edge
A screener produces lists of instruments with fundamentals attached, which feels more like "content" than a watchlist did. It is the same data under the same terms: EODHD's plans are, in their own words, "intended for personal use only as commercial use requires a more thorough approach to licensing and data use".
A screen you run for yourself is personal use. A public page publishing screening results is a different conversation, and the licence page in this lesson's sources is where it starts.
Try it now
Ship both pages, then use the join for real: screen, promote one name to your watchlist, and open the watchlist to find it there. If any step feels awkward, that awkwardness is the design telling you something — write it in PLAN.md rather than pushing through it, because course 4 rebuilds all of this into one surface and that note will be the brief.