js-cart
v1.0.1
Published
Scaffolds a new MVP e-commerce backend (Node.js + Express + MongoDB) into a new project directory.
Maintainers
Readme
js-cart
A scaffolding tool that generates a ready-to-run MVP e-commerce backend — Node.js, Express, MongoDB — into a new project directory. Think create-react-app, but for an e-commerce API: auth, products, cart, wishlist, coupons, checkout, orders, and an admin layer, all wired together and ready to customize.
This package itself is just the generator. The actual application it creates lives in template/ and has its own README with full setup instructions, API reference, and design notes once you've generated a project.
Usage
npx @your-npm-username/js-cart my-store
cd my-store
cp .env.example .env # fill in MONGO_URI and JWT_SECRET
npm install
npm run seed # optional: creates an admin user + sample products + a sample coupon
npm run devOr scaffold into the current directory (it must be empty):
mkdir my-store && cd my-store
npx @your-npm-username/js-cart .Replace
@your-npm-usernamewith whatever scope you actually publish this under (see Publishing below) — or with nothing at all if you publish it unscoped under a different available name.
What gets generated
- JWT authentication, product catalog with search/filter/sort, cart with live stock validation
- Wishlist with move-to-cart
- Coupons: percentage/fixed discounts, category/product scoping, usage limits, expiry
- Checkout with atomic stock decrements (race-condition-safe without needing MongoDB transactions), tax/shipping calculation, order history and cancellation
- Admin endpoints for order management and coupon management
- Security basics: bcrypt password hashing, helmet, rate limiting on auth routes, centralized error handling
- A seed script for instant local test data
See the generated project's own README for the full feature list, API reference, and the design tradeoffs made along the way.
Publishing
If you want to publish your own copy of this generator to npm:
- Pick a name. The unscoped name
js-cartis blocked on the public npm registry (a previous package by that exact name was published and then unpublished, and npm's anti-squatting policy permanently blocks republishing under an unpublished name — this exists specifically to prevent supply-chain attacks like the 2016 left-pad incident). Either pick a different unscoped name, or use a scoped name under your own npm username/org, e.g.@yourusername/js-cart— scopes are a separate namespace and aren't affected by that block. - Update the
namefield in thispackage.jsonto match, and update therepository/homepage/bugsURLs to your actual repo. npm loginnpm publish(scoped packages need--access publicon first publish unless you've already setpublishConfig.accessinpackage.json, which this one does).
License
MIT — see LICENSE.
