Why I built MyStocks
📚 Blog series: How I build MyStocks
- 1.Why I built MyStocks(current)
- 2.How I built the frontend of MyStocks
This summer, in addition to launching this blog, I wanted to do one other thing well: start and finish a real project and put it on the web. No matter how bumpy the road, I’d follow through to the end. Not a proof of concept, not a half‑built tool—something complete, simple, and usable. I also wanted to explore how far modern AI tools could take me without getting lost in the pursuit of perfection.
I created MyStocks: live stock watchlists with 5‑second updates, built by hand with AI assistance, authentication via Clerk, and a year‑one budget target of $200. Sign up, search for tickers, add them to your watchlist, and track their movement. That’s it. No charts (for now), no trading, no social feed. Purposefully small and intentionally simple—simple enough, in theory, to scale.
Introducing MyStocks
MyStocks lets you track your favorite stocks with live updates every 5 seconds. You sign up, search for stocks, add them to your watchlist, and track them. That’s it.
Why this project mattered
-
Completion over perfection. I’ve shipped plenty of useful one‑offs; this time I wanted the whole arc—live, public, done. Nothing is ever perfect; ship when it’s ready and watch that budget!
-
Learning by doing. Apply AI to a real, live, functional website. I wanted to gain a genuine understanding of modern web tools and form an authentic perspective through hands-on experience, not just documentation and YouTube videos.
-
Radical new tech. AI is changing how we build. I wanted to identify where it helps and where it falls short. I also wanted to battle-test modern tech choices: SaaS authentication, server-driven live updates, and full-stack type safety with configuration-based infrastructure.
What “using AI” meant in practice
It wasn’t enough to just chat with an LLM or accept inline suggestions. I used AI for scaffolding, testing, refactoring, performance hints, upgrades, and a dozen “what am I missing?” checks. At each phase, I asked: can AI help me do this better and faster while I keep my hands on the wheel?
The experience
The UI is intentionally minimal. You land on a clean sign‑in screen, create an account, and start searching. Type a few letters, matching stocks appear, click to add. A small “Live” indicator lets you know updates are flowing. When a price changes, it glows briefly, then settles. Calm, not frantic.
I care about polish more than flash. The app should feel frictionless.
-
Auth: Login/registration is managed by Clerk. I didn’t want to touch PII; Clerk handles identity and sessions, making it easy to implement standard, accessible auth-related forms.

-
Onboarding: After login, a simple CTA invites you to add stocks. A typeahead search surfaces stocks instantly; one click adds them to your watchlist.

-
Live state: A small “Live” indicator confirms a healthy connection. Your watchlist displays current prices. The most recently updated stocks go to the top and glow green for three seconds, then return to their standard color.

Scope: what made this non-trivial and how I reined it in
Like most “small” projects, it tried to grow. I let it expand enough to learn something real, then cut back to what mattered: a friendly sign‑in, a smooth search, and live updates that feel good. I wanted to say “it does what it says” and mean it.
A simple UI doesn’t guarantee a simple system. Three non-trivial concerns stood out:
-
Confidence and observability. Can I tell at a glance that it works? I set up reliable tests, structured logs, basic latency/error metrics, and a dashboard to confirm data is flowing.
-
User responsibility and privacy. Even with Clerk, you can leak if you’re careless. I secured endpoints with least‑privilege access, kept user-specific and public data paths separate, and avoided logging PII. If I didn’t need it, I didn’t store it.
-
Cost control at scale. Live data every 5 seconds can get expensive fast. With a $200 year‑one target, I chose Alpaca’s free market data tier (200 requests/minute), implemented aggressive caching, batched client updates, and avoided unnecessary per‑client polling.
What’s next?
For now, I’m psyched that MyStocks is live and looking good. While I don’t expect a flood of traffic, I’d love to eventually get enough to see how it behaves under organic load. Check it out at https://mystocks.site/ and let me know your thoughts.
Next, I’ll review my Sentry dashboards to confirm the system behaves as expected—and whether my current monitoring setup makes that clear or requires tuning. For the blog, I’ll provide a high-level overview of the project without delving too deeply into the details.
In future posts, I’ll share the adventures and misadventures, explain the core problems in plain language (with a little help from our robots), and talk about how modern AI is reshaping how software gets made.
📚 Blog series: How I build MyStocks
- 1.Why I built MyStocks(current)
- 2.How I built the frontend of MyStocks