@livefolio/storage
v0.3.4
Published
Supabase-backed `StorageProvider` implementation for [`@livefolio/sdk`](https://github.com/livefolio/sdk).
Readme
@livefolio/storage
Supabase-backed StorageProvider implementation for @livefolio/sdk.
Setup
npm installRequires peer dependencies:
@livefolio/sdk@supabase/supabase-jsv2+
Usage
import { createClient } from "@supabase/supabase-js";
import { createSupabaseStorage } from "@livefolio/storage";
const supabase = createClient(url, key);
const storage = createSupabaseStorage(supabase);The returned storage object conforms to the StorageProvider interface from @livefolio/sdk.
Scripts
| Command | Description |
| ------------------ | ------------------------ |
| npm run build | Build with tsup |
| npm test | Run tests (vitest) |
| npm run lint | Lint with ESLint |
| npm run format | Format with Prettier |
Architecture
- Entry point —
src/index.tsexportscreateSupabaseStorage(supabase) - Domain modules — tickers, indicators, signals, allocations, strategies, tradingDays, subscriptions
- Time-series — keyed by
trading_day_idforeign keys, resolved viaresolveTradingDayIds() - Pagination — queries exceeding 1,000 rows use
paginatedSelect()
Database
- Migrations in
supabase/migrations/are the source of truth - Schema files in
supabase/schemas/are reference copies - RLS enabled with public read access
Conventions
- ESM-only, TypeScript strict mode
- Node.js ≥ 20
- Tests co-located with source (
*.test.ts) database.types.tsis auto-generated — do not edit by hand
