Part of a series on building Balance, a portfolio rebalancing app, as a solo developer.
Balance started as a Brazilian-only app: B3 tickers, prices in reais, Brazilian income tax. Then came US stocks. Then crypto. The naïve path would have been three apps glued together — three price fetchers, three sets of forms, three rebalancing engines.
Instead, the whole thing pivots on a single field:
class Portfolio(BaseModel):
market = models.CharField(






