Kapable starter template: Inventory / Asset Tracker (auth, data, store, comms)
  • TypeScript 75.1%
  • CSS 21.4%
  • JavaScript 3.5%
Find a file
inventory-bot c6913acd6e fix: race-safe seed — memoize seedItemsIfEmpty so concurrent first-requests don't double-seed
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).
2026-06-21 18:12:51 -04:00
app fix: race-safe seed — memoize seedItemsIfEmpty so concurrent first-requests don't double-seed 2026-06-21 18:12:51 -04:00
public feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
.gitignore Add .gitignore 2026-06-21 21:58:04 +00:00
.npmrc feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
bun.lock feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
package.json feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
react-router.config.ts feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
README.md feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
seed.ts feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
tsconfig.json feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00
vite.config.ts feat: Inventory / Asset Tracker — data + store + comms low-stock alerts 2026-06-21 18:04:09 -04:00

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 — org sk_live_ key ({read,write}); kapable-data + kapable-store.
  • KAPABLE_COMMS_APP_TOKEN — comms at_ app token (from-domain kapable.ai); low-stock alerts.
  • INVENTORY_ALERT_TO — (optional) default alert recipient prefilled in the UI.
  • INVENTORY_EMAIL_FROM — (optional) bare sender address; defaults to noreply@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.