Hypelist: one app, two storage modes, no cloud requirement

Build milestone1 min readMarginFlip

Why an inventory app for resellers supports both Firebase and SQLite behind the same Flask backend, and what the dual-mode abstraction costs.

Source: Public repository: chasedndt/Hypelist

The build, in five parts.

01 Built
Working in development. Stripe integration exists as documented setup rather than live billing, and stays that way until the repo passes a hygiene review.
02 Process
Hypelist tracks streetwear inventory, listing prep and sales for resellers — data a solo operator may reasonably refuse to put in someone else's cloud, and that a multi-user deployment can't keep on one laptop.
03 Learned
Every schema change now has two migration stories, and the abstraction layer forbids leaning on either store's special features. That is real, permanent overhead — accepted because the local-first mode is a product promise, not a development convenience.
04 Skills
architecturefull-stacklocal-first
05 Saved
Source boundary: Public repository: chasedndt/Hypelist

Context#

Hypelist tracks streetwear inventory, listing prep and sales for resellers — data a solo operator may reasonably refuse to put in someone else's cloud, and that a multi-user deployment can't keep on one laptop.

Decision#

Rather than choosing, the Flask backend runs against a swappable persistence layer: SQLite for local-first single-operator use, Firebase for hosted multi-user mode. The React frontend does not know which one it is talking to.

Trade-offs#

Every schema change now has two migration stories, and the abstraction layer forbids leaning on either store's special features. That is real, permanent overhead — accepted because the local-first mode is a product promise, not a development convenience.

Current status#

Working in development. Stripe integration exists as documented setup rather than live billing, and stays that way until the repo passes a hygiene review.