The "SaaS Fatigue" is Real
The standard advice for building a SaaS in 2026 is always the same: Spin up a PostgreSQL instance, set up Clerk or NextAuth, and start collecting user data.
When I started building DividendFlow, a tool to model the "Snowball Effect" for 38,000+ US tickers, I decided to do the exact opposite.
I built it with Zero Database for user scenarios and No Authentication. Here is why this "architectural suicide" resulted in the fastest, most private fintech tool I’ve ever shipped.
1. The Challenge: 30 Years of Math in <200ms
The core of the app is a recursive DRIP (Dividend Reinvestment Plan) simulator. It has to calculate:
- Monthly compounding over 10, 20, or 30 years.
- Federal and State tax drag (Qualified vs. Ordinary dividends).
- Split-adjusted historical price action.
Doing this for 38,000 tickers on every toggle change (Taxable vs. Tax-Free) is computationally expensive.
2. The Architecture: URL as the Source of Truth
Instead of saving user scenarios (ticker, amount, tax settings) in a database, I moved the entire state to the URL parameters.
Why this wins:
- Instant Portability: You can copy the URL and send it to someone. When they open it, the engine re-runs the math. No "Share" button needed.
- Infinite Scalability: Since there is no DB lookup for a user profile, every request is a pure function. I can scale horizontally at the Edge without worrying about RDS connection limits.
- Zero Friction: Users get professional-grade projections in 3 seconds. No "Sign up to save" popups.
3. Next.js 15 Server Components for Deterministic Math
I offloaded the heavy compounding loops to Next.js 15 Server Components. This keeps the client-side bundle near zero.
// The core compounding logic (Simplified)
async function calculateSnowball(ticker: string, settings: TaxSettings) {
const history = await getCleanedDividendData(ticker); // Cached at the Edge
return history.reduce((acc, year) => {
const netDividend = applyTaxLogic(year.payout, settings);
const newShares = netDividend / year.price;
return acc + newShares;
}, initialPrincipal);
}
Note: By using Server Components, the user's browser only receives the final coordinates for the graph. No heavy math on low-end mobile devices.
4. Data Integrity: Cleaning the "Institutional Noise"
Indexing 38,000 tickers is easy. Normalizing them is hell.
Institutional APIs are full of "Special Dividends" that look like 50% yields but happen only once. If you plug that into a compounding formula, you get a fake "Financial Freedom" date.
I built a Normalization Layer that acts as a "Truth Filter," stripping out one-time spikes and ensuring the 20-year curve is based on recurring reality.
5. The Result: 25% Higher Retention
By removing the "Auth Wall," my return visitor rate is higher than any project I've ever built with a database. In 2026, Privacy is a UX feature. Users trust the tool because I don't ask for their bank credentials or their email.
Conclusion
We’ve over-engineered the web. You don't always need a database. You don't always need AI. Sometimes, you just need deterministic math, a fast framework like Next.js 15, and a respect for user privacy.
Check it out in action:
👉 DividendFlow.org
What do you think? Is "URL-as-state" the future for utility apps, or am I just avoiding a migration? Let's discuss in the comments!
Top comments (0)