Kapable starter template: Inventory / Asset Tracker (auth, data, store, comms)
- TypeScript 75.1%
- CSS 21.4%
- JavaScript 3.5%
The lane probe + first browser hit during warm-up both saw an empty table and each ran the seed → duplicate demo rows. Share one in-flight seed promise per process (mirrors ensureSchema). |
||
|---|---|---|
| app | ||
| public | ||
| .gitignore | ||
| .npmrc | ||
| bun.lock | ||
| package.json | ||
| react-router.config.ts | ||
| README.md | ||
| seed.ts | ||
| tsconfig.json | ||
| vite.config.ts | ||
Inventory / Asset Tracker
A Kapable v2 starter app: track items with quantities, categories, and photos — with a low-stock email alert when stock drops to or below an item's threshold.
Demonstrates kapable-data (items table), kapable-store (item photos,
presigned/streamed server-side), and kapable-comms (transactional low-stock
alert email via the org at_ app token).
Server-only secrets (deploy env)
KAPABLE_ORG_KEY— orgsk_live_key ({read,write}); kapable-data + kapable-store.KAPABLE_COMMS_APP_TOKEN— commsat_app token (from-domainkapable.ai); low-stock alerts.INVENTORY_ALERT_TO— (optional) default alert recipient prefilled in the UI.INVENTORY_EMAIL_FROM— (optional) bare sender address; defaults tonoreply@kapable.ai.
Tables/buckets are app-slug-prefixed (inventory_items, inventory-photos).
All platform IO runs server-side in app/lib/inventory.server.ts; no credential
ever reaches the client bundle.