# Prior art

> You asked whether something like this already exists. Short answer: finance templates exist; a finance primitive system does not.

Source: https://lopifi.com/docs/03-prior-art
Part of: Lopifi — US GAAP books on autopilot, reviewed by a CPA (https://lopifi.com)

---

# Prior art

You asked whether something like this already exists. Short answer: **finance *templates* exist; a finance *primitive system* does not.**

## What exists

| Project | What it is | Why it isn't this |
|---|---|---|
| [shadcn/ui](https://ui.shadcn.com/) | The distribution model and base primitives | Deliberately domain-agnostic. It's our foundation, not our competitor — we consume it via `registryDependencies`. |
| [Shadcn Fintech](https://shadcn-fintech.vercel.app/dashboard) | Free open-source fintech dashboard template, ~13 pages, crypto candlesticks, drag-drop layout | A **template**: a finished app you fork and gut. No money primitive, no statement components, no accounting conventions. Fork-and-diverge, not install-and-compose. |
| [Shadcnblocks](https://www.shadcnblocks.com/) — Zippay, Metafi | Paid consumer-fintech and B2B payments blocks, $79/stack | Marketing-page blocks (hero, pricing, feature grid) with a fintech skin. Almost no product surface. Not free. |
| [ReUI](https://reui.io/) | 1,000+ free shadcn components, 60+ categories, incl. data grids | Breadth over depth. Generic data grid, generic cards. Nothing knows what a currency is. |
| [Shadcn UI Kit — Finance](https://shadcnuikit.com/dashboard/finance) | Admin dashboard template | Same category as above. Template, not system. |
| [cameronking4/shadcn-openai-plaid-dashboard](https://github.com/cameronking4/shadcn-openai-plaid-dashboard) | Personal finance dashboard w/ Plaid + OpenAI | An **application**. Tightly coupled to Plaid. Not extractable. |
| [Tremor](https://tremor.so/) | React dashboard components, charts + KPI blocks | Closest in spirit, and genuinely good. But it's *dashboard*-native, not *finance*-native: no accounting negatives, no statement rules, no multi-currency, no ledger semantics. |
| [Actual Budget](https://actualbudget.org/), [Firefly III](https://www.firefly-iii.org/) | Full open-source personal finance apps | Real financial correctness, zero reusability. Their UI is welded to their domain model. |
| [Apache Fineract](https://fineract.apache.org/) | Core banking backend | Backend. No UI story. |
| [Recharts](https://recharts.org/) / [visx](https://airbnb.io/visx/) | Charting | We wrap them. Neither knows about negative-aware baselines, money axes, or fiscal periods. |

## The gap, stated precisely

Nothing in the list above ships:

1. **A money primitive.** Minor-unit storage, per-currency decimals, accounting negatives, `null`/`0`/redacted as distinct states.
2. **Financial statement components.** P&L, balance sheet, cash flow — with hierarchy, expandable rollups, period columns, variance, drill-down, and correct rule lines. This is the single largest hole. Not one library has a `<BalanceSheet />`.
3. **Reconciliation UI.** Two-pane matching, confidence scoring, bulk match. Every accounting product rebuilds it from scratch.
4. **FX / swap primitives** that treat a rate as a perishable, timestamped fact.
5. **Typographic accounting conventions.** Case-shifted parentheses, single/double rules, em-dash nil.
6. **A documented motion system** where the frequency of an interaction determines whether it animates.
7. **Designed responsive collapse for dense financial tables** — not `overflow-x: auto`.

## Our position

> Lopifi is to fintech what shadcn/ui is to general UI: not a template you fork, a **set of owned primitives you compose** — with a domain model where a template has only a layout.

Concretely, we differentiate on:

- **Correctness as design.** The formatting rules are part of the component, not the consumer's problem.
- **Statements.** The thing nobody has built.
- **Motion doctrine.** A written law about when *not* to animate, which is rarer and more valuable than a library of animations.
- **Free to install.** Shadcnblocks charges $79/stack for marketing sections. We ship product surfaces for nothing, under the site's terms rather than an open-source licence.

## Explicitly borrowed

- **Distribution model** from shadcn/ui — `registry.json`, namespaced installs, copy-paste ownership. Don't reinvent it; it's correct.
- **Charting engine** — wrap, never rebuild.
- **Accessible primitives** — Base UI (preferred) or Radix for anything with keyboard/focus behavior. Never hand-roll a combobox.
- **Toasts** — Sonner. **Drawers** — Vaul. Both are the reference implementations of our own motion doctrine; there is nothing to improve.

## Explicitly rejected

Named, because a system is defined as much by what it turned down. All three are respectable work; none of them survives contact with a money surface.

| Rejected | Source | Why not |
|---|---|---|
| **Disney's 12 principles** | `raphaelsalaja/12-principles-of-animation` | Anticipation, squash-and-stretch, follow-through and overshoot exist to make a character read as alive. A balance is not alive. Each one adds time before the number is legible, and three of them distort the glyph while the eye is on it. We take exactly one — *slow in, slow out* — and we call it easing. |
| **Glassmorphism** | `iart-ai/glassmorphism` | Wants `backdrop-filter` on large surfaces, which we forbid outright ([elevation](foundations/04-elevation-borders-shadows.md#backdrops)). It also places a variable, uncontrolled background behind text whose contrast we claim at 7:1. Not a stylistic objection — a correctness one. |
| **Scroll-driven narrative motion** | `MengTo/animation-on-scroll`, `gsap-scrolltrigger-storytelling` | Built for content-led pages where scrolling *is* the interaction. In a ledger, scrolling is how you reach row 4,000, and anything attached to it is friction between the user and a number. |

The [registry](https://www.ui-skills.com/) these come from is worth reading in full. The point is only that "a good motion skill" and "a good motion skill *for this*" are different claims, and the second one is the one that matters.

## Re-check cadence
This landscape moves. Re-audit before each major milestone, and specifically check whether shadcn's own registry has absorbed any of the gap above.
