DEV Community

Aymen Damak
Aymen Damak

Posted on

I spent a year building the portfolio tracker I couldn't find anywhere

The problem that wouldn't go away

I invest in Bitcoin, stocks and ETFs.
Nothing exotic — just a regular retail investor
trying to keep track of what I own and
whether I'm actually making money.

The problem: no single app handled all three properly.

Delta is great for crypto. But my ETFs? Not really.
My brokerage app shows my stocks but not my BTC.
And none of them calculated my real PnL because
none of them included transaction fees.

So I'd end up with a Google Sheet. Half-broken,
always outdated, and always wrong because I kept
forgetting to add broker fees.

One evening I spent 2 hours trying to calculate
my real performance since I started investing.
I ended up with a number I didn't trust.

That was the moment I decided to build Sway.


Why fees matter more than you think

Most portfolio trackers show you a PnL based on
the difference between current price and
your average buy price.

That's not your real profit.

Your real profit is what you'd actually pocket
if you sold everything today, after every fee
you've paid along the way.

Example:

  • You buy 0.1 BTC at $60,000, you pay $6,000 + $15 fee
  • BTC goes to $65,000, your position is worth $6,500
  • Most trackers show: +$500 (+8.3%)
  • Reality: you paid $6,015, so your real gain is +$485 (+8.06%)

Small difference? Yes. But across dozens of
transactions over years, it compounds into
a significantly distorted picture of your performance.

Sway bakes every fee into the cost basis calculation.
The PnL you see is the real one.


The technical decisions

Stack: Angular/Ionic, Node.js/Express,
PostgreSQL, deployed on CloudFront + Render.

I chose Angular because I know it well and
Ionic gives me a path to mobile without
maintaining two codebases.

PostgreSQL for the portfolio math. Complex
calculations with historical data need a real
relational database, not a document store.

Render for the backend. Simple, affordable,
no DevOps overhead for a solo developer.

CloudFront + S3 for the frontend. Fast global
delivery, scales automatically.

The hardest part: price history.

Every time a user adds a backdated transaction,
Sway needs to rebuild the portfolio value history
from that date forward. Getting this right,
especially with multiple assets, multiple currencies,
and fees, took longer than anything else.

The second hardest part: multi-currency.

A French investor with a PEA in euros and BTC
in dollars needs everything converted and
displayed consistently. Exchange rates, historical
rates, real-time rates. It's a lot of moving parts.


What Sway does today

After a year of building, here's where it stands:

  • One dashboard for Bitcoin, stocks (NYSE + Euronext) and ETFs
  • Real PnL with every transaction fee included
  • Realized vs unrealized PnL
  • Average cost basis per position (average cost or FIFO)
  • Prices refreshed every 5 minutes, EUR/USD auto-converted
  • Portfolio value charts from 1 week to all-time
  • 30-day performance heatmap
  • DCA simulator — what-if calculator for future purchases
  • AI assistant to query your own portfolio
  • Weekly Monday email recap with AI-written insight
  • Privacy mode, PIN lock, encrypted data
  • CSV import (Coinbase/Binance formats)

Free tier: 15 assets, 30 days history.
First 500 signups get Premium free for 1 year.


What I learned building this

1. Build for your own problem first.
I am the target user. Every feature I built,
I needed myself. That kept me focused and
stopped me from building things nobody asked for.

2. The switching cost is the real challenge.
The hardest thing isn't building the product.
It's convincing people to move away from
whatever they're already using, even if it's
a broken spreadsheet. Habit is powerful.

3. The weekly email is underrated.
The feature that took the least time to build
might be the most important for retention.
A Monday morning email showing your portfolio
performance creates a habit loop without
requiring the user to open the app.

4. Solo development is hard but doable.
One year, one developer, one product.
No team, no funding, no safety net.
The only thing that kept me going was
using the product myself every day.


Try it

If you invest in Bitcoin, stocks or ETFs
and you've ever tried to calculate your
real performance across all your positions —
Sway is built for you.

👉 https://www.sway-app.space?utm_source=devto&utm_medium=article&utm_campaign=launch

First 500 signups get Premium free for 1 year.

Built by one developer. Feedback welcome.

Top comments (0)