NVDA
NVIDIA Corporation
-1.39%
$194.83
You own
Value
$194.83
Gain / loss
+$0.00
AAPL
Apple Inc.
+4.84%
$308.63
You own
Value
$308.63
Gain / loss
+$0.00
MSFT
Microsoft Corporation
+1.62%
$390.49
You own
Value
$390.49
Gain / loss
+$0.00
GOOGL
Alphabet Inc.
-0.36%
$359.91
You own
Value
$0.00
Gain / loss
+$0.00
AMZN
Amazon.com, Inc.
+0.40%
$242.67
You own
Value
$0.00
Gain / loss
+$0.00
TSLA
Tesla, Inc.
-7.49%
$393.45
You own
Value
$1573.80
Gain / loss
+$0.00
META
Meta Platforms, Inc.
-4.90%
$582.90
You own
Value
$0.00
Gain / loss
+$0.00
NFLX
Netflix, Inc.
+4.66%
$77.65
You own
Value
$0.00
Gain / loss
+$0.00
Portfolio value
Cash + everything you own, over time
Price history
Recorded from the moment this app started tracking it — Finnhub's free tier doesn't offer past history
Recent news
Real headlines from Finnhub for the company selected above — opening a link takes you to the original source
| Time | Action | Company | Shares | Price | Cash change |
|---|---|---|---|---|---|
| 2026-07-05 20:49 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 20:49 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 20:49 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 20:49 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 20:48 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:48 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:48 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 20:48 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 20:48 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:48 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 20:48 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:45 | Reset | — | — | — | +$1301.70 |
| 2026-07-05 20:45 | Reset | Amazon.com, Inc. | -1 | — | +$0.00 |
| 2026-07-05 20:45 | Reset | Alphabet Inc. | -1 | — | +$0.00 |
| 2026-07-05 20:45 | Reset | Microsoft Corporation | -1 | — | +$0.00 |
| 2026-07-05 20:45 | Reset | Apple Inc. | -1 | — | +$0.00 |
| 2026-07-05 20:45 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:38 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 20:38 | Sell | Meta Platforms, Inc. | -1 | $582.90 | +$582.90 |
| 2026-07-05 20:38 | Buy | Meta Platforms, Inc. | 1 | $582.90 | $-582.90 |
| 2026-07-05 20:38 | Buy | Alphabet Inc. | 1 | $359.91 | $-359.91 |
| 2026-07-05 20:38 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 20:37 | Reset | — | — | — | +$1900.87 |
| 2026-07-05 20:37 | Reset | Microsoft Corporation | -1 | — | +$0.00 |
| 2026-07-05 20:37 | Reset | Apple Inc. | -3 | — | +$0.00 |
| 2026-07-05 20:37 | Reset | NVIDIA Corporation | -3 | — | +$0.00 |
| 2026-07-05 20:37 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:25 | Sell | Apple Inc. | -5 | $308.63 | +$1543.15 |
| 2026-07-05 20:25 | Sell | Apple Inc. | -5 | $308.63 | +$1543.15 |
| 2026-07-05 20:25 | Sell | Apple Inc. | -5 | $308.63 | +$1543.15 |
| 2026-07-05 20:25 | Sell | Apple Inc. | -5 | $308.63 | +$1543.15 |
| 2026-07-05 20:25 | Sell | Apple Inc. | -5 | $308.63 | +$1543.15 |
| 2026-07-05 20:25 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 5 | $308.63 | $-1543.15 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 5 | $308.63 | $-1543.15 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 5 | $308.63 | $-1543.15 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:25 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:25 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:22 | Buy | Apple Inc. | 2 | $308.63 | $-617.26 |
| 2026-07-05 20:22 | Reset | — | — | — | +$7835.50 |
| 2026-07-05 20:22 | Reset | Netflix, Inc. | -7 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | Meta Platforms, Inc. | -2 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | Tesla, Inc. | -5 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | Amazon.com, Inc. | -3 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | Microsoft Corporation | -6 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | Apple Inc. | -1 | — | +$0.00 |
| 2026-07-05 20:22 | Reset | NVIDIA Corporation | -4 | — | +$0.00 |
| 2026-07-05 20:22 | Sell | Microsoft Corporation | -2 | $390.49 | +$780.98 |
| 2026-07-05 20:22 | Buy | Microsoft Corporation | 3 | $390.49 | $-1171.47 |
| 2026-07-05 20:19 | Sell | Microsoft Corporation | -1 | $390.49 | +$390.49 |
| 2026-07-05 20:19 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 20:19 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 20:19 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 20:18 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 20:18 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:13 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 20:09 | Sell | Amazon.com, Inc. | -1 | $242.67 | +$242.67 |
| 2026-07-05 20:09 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 20:05 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:55 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:55 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:55 | Sell | Alphabet Inc. | -1 | $359.91 | +$359.91 |
| 2026-07-05 19:55 | Sell | Netflix, Inc. | -1 | $77.65 | +$77.65 |
| 2026-07-05 19:55 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:55 | Buy | Meta Platforms, Inc. | 1 | $582.90 | $-582.90 |
| 2026-07-05 19:16 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:16 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 19:16 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 19:16 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 19:16 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:16 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:16 | Buy | Alphabet Inc. | 1 | $359.91 | $-359.91 |
| 2026-07-05 19:16 | Sell | Alphabet Inc. | -1 | $359.91 | +$359.91 |
| 2026-07-05 19:16 | Sell | Alphabet Inc. | -1 | $359.91 | +$359.91 |
| 2026-07-05 19:16 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 19:16 | Sell | Amazon.com, Inc. | -1 | $242.67 | +$242.67 |
| 2026-07-05 19:16 | Sell | Tesla, Inc. | -1 | $393.45 | +$393.45 |
| 2026-07-05 19:16 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:16 | Sell | Netflix, Inc. | -1 | $77.65 | +$77.65 |
| 2026-07-05 19:16 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:16 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:16 | Sell | Meta Platforms, Inc. | -1 | $582.90 | +$582.90 |
| 2026-07-05 19:16 | Buy | Meta Platforms, Inc. | 1 | $582.90 | $-582.90 |
| 2026-07-05 19:16 | Buy | Meta Platforms, Inc. | 1 | $582.90 | $-582.90 |
| 2026-07-05 19:14 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 19:14 | Sell | Apple Inc. | -1 | $308.63 | +$308.63 |
| 2026-07-05 19:14 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:09 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:09 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:08 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:08 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:08 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:08 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:08 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:08 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:08 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:08 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:08 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:08 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:08 | Buy | Apple Inc. | 1 | $308.63 | $-308.63 |
| 2026-07-05 19:08 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:08 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:08 | Buy | Alphabet Inc. | 1 | $359.91 | $-359.91 |
| 2026-07-05 19:08 | Buy | Alphabet Inc. | 1 | $359.91 | $-359.91 |
| 2026-07-05 19:08 | Buy | Netflix, Inc. | 1 | $77.65 | $-77.65 |
| 2026-07-05 19:08 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:08 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:08 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:08 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 19:08 | Buy | Tesla, Inc. | 1 | $393.45 | $-393.45 |
| 2026-07-05 19:08 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 19:08 | Buy | Amazon.com, Inc. | 1 | $242.67 | $-242.67 |
| 2026-07-05 19:07 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:07 | Sell | Microsoft Corporation | -1 | $390.49 | +$390.49 |
| 2026-07-05 19:07 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:07 | Buy | Microsoft Corporation | 1 | $390.49 | $-390.49 |
| 2026-07-05 19:02 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:02 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:02 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:02 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 19:02 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:02 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:02 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 19:02 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 18:59 | Sell | NVIDIA Corporation | -1 | $194.83 | +$194.83 |
| 2026-07-05 18:59 | Buy | NVIDIA Corporation | 1 | $194.83 | $-194.83 |
| 2026-07-05 18:58 | Deposit | — | — | — | +$10000.00 |
This is a practice trading app — pretend money, real stock prices. Everything runs on one server, and every piece below is something you can open and read.
What happens when you click Buy
Your browser sends the quantity to the server and waits — it never changes the numbers
itself. Flask looks up the current price, checks you have enough cash, writes one new row
to the ledger table, then re-adds the whole list to work out your new cash and shares, and
sends those numbers back. The page updates just that one card — no reload, no page jump.
Flask — the program
A Python web framework, run by gunicorn (2 worker processes) behind
nginx. It decides what happens when you click Buy or Sell, builds the page you see, and is
the only thing allowed to change your cash or shares — the page in your browser can never
change them on its own.
PostgreSQL — the database
Every deposit, buy, sell, and reset is written as a new row in one growing list (a
"ledger") that's never edited or erased. Your cash and shares aren't stored directly —
they're worked out by adding up that list, so there's always an honest record of
everything that happened. Six tables in total:
ledger— every deposit, buy, sell, and reset, foreverprice_cache— each company's latest price, refreshed at most once a minuteprice_history— every fresh price fetch, building the price chart over timeportfolio_snapshots— your total account value, saved roughly every 15 minutescompany_logos— logo images fetched once and cached, so your browser never asks Finnhub directlycompany_metrics— 5-day/1-month/1-year returns and 52-week range, refreshed daily
Finnhub — real stock data
The server asks Finnhub for each company's current price and saves the answer for about
a minute before asking again; company logos and performance stats (5-day, 1-month, 1-year
returns, 52-week range) are cached too, refreshed daily since they change slowly. Your API
key lives only on the server and is never sent to the browser. Finnhub's free plan doesn't
include multi-year historical prices — that's a real limit of the free API, not something
this app fakes. The "years of growth" numbers you see are genuine trailing returns Finnhub
does provide for free; the price chart's long-term view instead grows organically from the
moment this app started tracking it.
gunicorn + systemd — staying online
gunicorn runs the Flask app as two worker processes on
127.0.0.1:8000, not
exposed to the internet directly. systemd (part of the server's operating system) manages
it as a service named paper-trader — restarts it if it ever crashes, and
starts it automatically if the server reboots. PostgreSQL and nginx are separate systemd
services managed the same way.
nginx + HTTPS — the secure connection
nginx listens on ports 80 and 443, redirects plain HTTP to HTTPS, and forwards everything
else to gunicorn. The certificate is a free one from Let's Encrypt, obtained and installed
by certbot; a systemd timer checks daily and renews it automatically before it expires — no
one has to remember to do it by hand.
The charts — hand-drawn, no outside library
The price and portfolio charts are plain JavaScript drawing simple shapes (SVG) directly
from the numbers in the database — no chart library, no other outside service, nothing
downloaded from anywhere but this server.