- Node/Express/TypeScript API under /api/v1 with JWT auth (login, refresh, logout, /me) - Prisma schema: vendors, users, roles, products, categories, taxes, transactions - SQLite for local dev; Postgres via docker-compose for production - Full CRUD routes for vendors, users, categories, taxes, products with Zod validation and RBAC - Paginated list endpoints scoped per vendor; refresh token rotation - React/TypeScript admin SPA (Vite): login, protected routing, sidebar layout - Pages: Dashboard, Catalog (tabbed Products/Categories/Taxes), Users, Vendor Settings - Shared UI: Table, Modal, FormField, Btn, PageHeader components - Multi-stage Dockerfile; docker-compose with Postgres healthcheck - Seed script with demo vendor and owner account - INSTRUCTIONS.md, ROADMAP.md, .claude/launch.json for dev server config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
loose-envify
Fast (and loose) selective process.env replacer using js-tokens instead of an AST. Works just like envify but much faster.
Gotchas
- Doesn't handle broken syntax.
- Doesn't look inside embedded expressions in template strings.
- this won't work:
console.log(`the current env is ${process.env.NODE_ENV}`); - Doesn't replace oddly-spaced or oddly-commented expressions.
- this won't work:
console.log(process./*won't*/env./*work*/NODE_ENV);
Usage/Options
loose-envify has the exact same interface as envify, including the CLI.
Benchmark
envify:
$ for i in {1..5}; do node bench/bench.js 'envify'; done
708ms
727ms
791ms
719ms
720ms
loose-envify:
$ for i in {1..5}; do node bench/bench.js '../'; done
51ms
52ms
52ms
52ms
52ms