{"_id":"@danielkmwangangi/remix-ecommerce","_rev":"8-f6a30f942023f282884583c8e5038b69","name":"@danielkmwangangi/remix-ecommerce","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.0","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.0","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"48b1948f3b2fd910432633141a241c652ecc3162","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.0.tgz","fileCount":8,"integrity":"sha512-YSuyFtydrAY4dvf+L0HMMNwpslGqhes63T1yTcSp03h98oolBWlmaevy7S/2ybuPe4AoD3D+vKBa9LWJjSb0WQ==","signatures":[{"sig":"MEUCIQCiQ5sdC4C7nohQLz5mNQeAm/jTedfrroc94Lg4dlrZ/wIgGH0yZMpf9YeGXRNhvf6Q7B5Q4tzskK242R9TwbOVSYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32273},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./routes":"./dist/routes/index.js","./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.0_1763546526290_0.7822912231034291","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.1","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.1","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"4a7754c0308685734897caeb6ce9e8d8b3b3cf27","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.1.tgz","fileCount":11,"integrity":"sha512-HUPCWuotDyOcXX7x/1R/dlhj/v5SOpFb44Fmf6bbfADf6mQRABC45bZnHpayUPh/p5z7HhR1E88qjUVG0YiV+A==","signatures":[{"sig":"MEUCIG0Srb3yQ8jlhOd2ZdSMcOZBFXscZmAsAaEWMlizgaFpAiEAyveLujN6JbvBOg1o3ax9uLTYpMjrWlTWYOmuzNFLv0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50879},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./routes":"./dist/routes/index.js","./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.1_1763549761528_0.6848855760702803","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.2","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.2","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"cf9bd0fa4d446337c0415201645d33f82f962b06","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.2.tgz","fileCount":79,"integrity":"sha512-YAlgww0WdWlh5BSEFYHKNSUikyAIQaQSWsZZWVzwWPUS4RnLJ6iKWrnGhI0si+P63LW0YgMYt0+ERpZmszo6SQ==","signatures":[{"sig":"MEQCICjz41K7V4Pt8+S0WgEw0npbSiHO2KVFOWV2cJm2/kTCAiBaTQ60tRj54hB1K8/0unLGNcqL+nhnzpb2J4kOKl+zuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232883},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./routes":"./dist/routes/index.js","./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.2_1763551013683_0.6650740351399433","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.3","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.3","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"97d06197882cac495e51a0927ff38d4c3add7559","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.3.tgz","fileCount":79,"integrity":"sha512-4TUw9R6A3wBgnQAA9pohd5Iaf6ErsluRNY03lD0b1fGmJDtpj98kOmlsGuq1juDZQXqEkxJo6erQsnHLlfz5Qw==","signatures":[{"sig":"MEQCIAqy1hdOBQ47yBYGZgx3fNqTs7VUC0Gesgn14o293obxAiAWA9yypRzXa6yLNNDtLByFcnGckAYV8VOxCCLYAbX8TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233040},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./dist/*":"./dist/*","./routes":{"types":"./dist/routes/index.d.ts","default":"./dist/routes/index.js"},"./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.3_1763552178727_0.8164237544791157","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.4","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.4","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"6f6e622d61bb17555a12663a779c27dc65965804","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.4.tgz","fileCount":79,"integrity":"sha512-vQvGr2ewVINXbKEExkcEiD1Zt/Qki5giJj9UGGaU4LmsXifLsDwSfHBAAeBd92becX8G+0LSH6d82xQ8dQ4nhQ==","signatures":[{"sig":"MEYCIQC7fumu4bESCDkcY09A+m41XuyzyMxeU9wlWZX5N2ZNHQIhANKO8hCKocdJxBB1ss4URJ2Jf/bu5mczqDcyLwdqSB5D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233178},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./dist/*":"./dist/*","./routes":{"types":"./dist/routes/index.d.ts","default":"./dist/routes/index.js"},"./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.4_1763552978699_0.45496329488851783","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.5","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.5","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"09446024b533a5926a11e1beb3b2424bdbf79ffd","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.5.tgz","fileCount":79,"integrity":"sha512-PEzaIfUDxgjE4aBcKMMQQ1YL8TcW5Qjk1PGE7L010EL7YGE9JVRpcHRB5qN59XzTyDAEdRXtSnIzOQ/GU7d6wA==","signatures":[{"sig":"MEQCIGvqPkSxfQkQMaaS1FinfgwgU3Aaj/xtkUuNFsSaIPWfAiAqJOLOpcPnkYU71t0lM7a9ioaxMTiVQof0MBC0JMSxqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233197},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./dist/*":"./dist/*","./routes":{"types":"./dist/routes/index.d.ts","default":"./dist/routes/index.js"},"./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.5_1763553433660_0.8562216210771016","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.6","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","_id":"@danielkmwangangi/remix-ecommerce@1.0.6","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"dist":{"shasum":"15a3666eb9a0d1da82b2642f3efb308a17be49d8","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.6.tgz","fileCount":79,"integrity":"sha512-L9yL4rUT88gxDCZQsdaapo0g+Lr8IHR2tTno1oneqKY3MSsDZjy0O92XJR1HKSMhg5/duLVjZKWZJ23mEVRicg==","signatures":[{"sig":"MEUCIFVKybtvIgiTmT3u/Fre+KQGYthNUc7dcgHN2nAXL/TWAiEAlyNo3W5KzYqk51ku67IaDO+dYbGDMgp5MDwSX1XT7d8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233134},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./dist/*":"./dist/*","./routes":{"types":"./dist/routes/index.d.ts","default":"./dist/routes/index.js"},"./styles":"./dist/styles/index.css","./components":"./dist/components/index.js"},"scripts":{"dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","build":"tsc -p tsconfig.build.json && npm run copy-files","typecheck":"tsc","copy-files":"node scripts/copy-files.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"_npmVersion":"10.7.0","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.22.4","isbot":"^4","stripe":"^14.10.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","isbot":"^4.1.0","react":"^18.3.1","eslint":"^8.57.0","postcss":"^8.4.47","react-dom":"^18.3.1","typescript":"^5.5.3","tailwindcss":"^3.4.13","@types/react":"^18.3.3","autoprefixer":"^10.4.20","@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react-dom":"^18.3.0","vite-tsconfig-paths":"^5.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remix-ecommerce_1.0.6_1763554721216_0.7749372086696096","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@danielkmwangangi/remix-ecommerce","version":"1.0.7","type":"module","description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./routes":{"types":"./dist/routes/index.d.ts","default":"./dist/routes/index.js"},"./dist/*":"./dist/*","./components":"./dist/components/index.js","./styles":"./dist/styles/index.css"},"scripts":{"build":"tsc -p tsconfig.build.json && npm run copy-files","copy-files":"node scripts/copy-files.cjs","dev":"remix vite:dev","lint":"eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .","typecheck":"tsc","prepublishOnly":"npm run build"},"keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","peerDependencies":{"@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","react":"^18.0.0","react-dom":"^18.0.0"},"dependencies":{"@remix-run/node":"^2.0.0","@remix-run/react":"^2.0.0","@supabase/supabase-js":"^2.39.0","isbot":"^4","stripe":"^14.10.0","zod":"^3.22.4"},"devDependencies":{"@remix-run/dev":"^2.17.2","@remix-run/serve":"^2.17.2","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@typescript-eslint/eslint-plugin":"^7.18.0","@typescript-eslint/parser":"^7.18.0","autoprefixer":"^10.4.20","eslint":"^8.57.0","isbot":"^4.1.0","postcss":"^8.4.47","react":"^18.3.1","react-dom":"^18.3.1","tailwindcss":"^3.4.13","typescript":"^5.5.3","vite":"^5.4.2","vite-tsconfig-paths":"^5.1.0"},"engines":{"node":">=20.0.0"},"_id":"@danielkmwangangi/remix-ecommerce@1.0.7","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-jFa31W67UE56k2MEsSbsbi0mNK23J3YfiYzkkC3sUGGEEPigBbYsWsn158qh0q0Twdpe35HHacUwbsUg7j0zgg==","shasum":"9ed7b349d8d767364bd74d4b0e46528281c07ac6","tarball":"https://registry.npmjs.org/@danielkmwangangi/remix-ecommerce/-/remix-ecommerce-1.0.7.tgz","fileCount":91,"unpackedSize":247133,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC3eqPrgImyxj1Imf3gySJqvjctG3HMCZQAyd/y1q42nAIhAOLucdXttvS/iBg4OE89t9/feTOx/eTzNc7H4qYFJbGb"}]},"_npmUser":{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"},"directories":{},"maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/remix-ecommerce_1.0.7_1763556516567_0.5253486700982379"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-19T10:02:06.163Z","modified":"2025-11-19T12:48:36.925Z","1.0.0":"2025-11-19T10:02:06.534Z","1.0.1":"2025-11-19T10:56:01.732Z","1.0.2":"2025-11-19T11:16:53.861Z","1.0.3":"2025-11-19T11:36:18.917Z","1.0.4":"2025-11-19T11:49:38.911Z","1.0.5":"2025-11-19T11:57:13.850Z","1.0.6":"2025-11-19T12:18:41.403Z","1.0.7":"2025-11-19T12:48:36.751Z"},"author":{"name":"Daniel K. Mwangangi"},"license":"MIT","keywords":["remix","ecommerce","supabase","stripe","shopping-cart","admin-portal"],"description":"A complete e-commerce solution for Remix with Supabase backend, admin portal, and Stripe payments. Includes ready-to-use routes for shop, cart, checkout, and admin dashboard. Just copy-paste the starter route files to get started!","maintainers":[{"name":"danielkmwangangi","email":"danielkmwangangi@gmail.com"}],"readme":"# @danielkmwangangi/remix-ecommerce\n\nA complete e-commerce solution for Remix applications with Supabase backend, admin portal, and Stripe payments.\n\n## Features\n\n- 🛍️ **Complete E-commerce Flow**: Product listing, detail pages, shopping cart, checkout, and order management\n- 🎨 **Admin Portal**: Full admin dashboard for managing products, orders, and inventory\n- 💳 **Payment Integration**: Stripe payment processing ready\n- 🗄️ **Supabase Backend**: Uses Supabase for database and real-time capabilities\n- 📦 **Installable Package**: Easy to install and integrate into any Remix app\n- 🎯 **Type-Safe**: Full TypeScript support\n- 🚀 **Production Ready**: Includes sample data, migrations, and best practices\n\n## Installation\n\n```bash\nnpm install @danielkmwangangi/remix-ecommerce\n```\n\n## Quick Start\n\n### 1. Set Up Supabase\n\n1. Create a new project at [supabase.com](https://supabase.com)\n2. Go to SQL Editor and run the schema:\n\n```sql\n-- Copy and paste the contents of database/schema.sql\n```\n\n3. (Optional) Seed sample data:\n\n```sql\n-- Copy and paste the contents of database/seed.sql\n```\n\n### 2. Configure Environment Variables\n\nCreate a `.env` file in your Remix app:\n\n```env\nSUPABASE_URL=your-supabase-project-url\nSUPABASE_ANON_KEY=your-supabase-anon-key\nSUPABASE_SERVICE_KEY=your-supabase-service-role-key\nSTRIPE_SECRET_KEY=your-stripe-secret-key\nSESSION_SECRET=your-random-session-secret\n```\n\n### 3. Create Route Files\n\nCreate route files in your `app/routes/` directory. Each route file is just a simple re-export - copy and paste these starter files:\n\n#### Shop Listing Page (`app/routes/shop._index.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/shop._index.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/shop._index.js\";\n```\n\n#### Product Detail Page (`app/routes/shop.products.$id.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/shop.products.$id.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/shop.products.$id.js\";\n```\n\n#### Shopping Cart (`app/routes/cart.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/cart.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/cart.js\";\n```\n\n#### Checkout Page (`app/routes/checkout.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/checkout.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/checkout.js\";\n```\n\n#### Order Confirmation (`app/routes/order-confirmation.tsx`)\n\n```tsx\nexport { loader, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/order-confirmation.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/order-confirmation.js\";\n```\n\n#### Admin Dashboard (`app/routes/admin._index.tsx`)\n\n```tsx\nexport { loader, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin._index.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin._index.js\";\n```\n\n#### Admin Products List (`app/routes/admin.products._index.tsx`)\n\n```tsx\nexport { loader, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.products._index.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.products._index.js\";\n```\n\n#### Admin Product Edit/Create (`app/routes/admin.products.$id.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.products.$id.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.products.$id.js\";\n```\n\n#### Admin Orders List (`app/routes/admin.orders._index.tsx`)\n\n```tsx\nexport { loader, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.orders._index.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.orders._index.js\";\n```\n\n#### Admin Order Detail (`app/routes/admin.orders.$id.tsx`)\n\n```tsx\nexport { loader, action, meta } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.orders.$id.js\";\nexport { default } from \"@danielkmwangangi/remix-ecommerce/dist/routes/admin.orders.$id.js\";\n```\n\n> 📝 **Note**: See `STARTER_ROUTES.md` in the package for a complete list of all starter route files with full code examples.\n\n### 4. Add Floating Cart Button (Optional but Recommended)\n\nAdd the floating cart button to your root layout:\n\n```tsx\n// In app/root.tsx\nimport { useLoaderData } from \"@remix-run/react\";\nimport type { LoaderFunctionArgs } from \"@remix-run/node\";\nimport { json } from \"@remix-run/node\";\nimport { getCartCount, FloatingCartButton } from \"@danielkmwangangi/remix-ecommerce\";\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n  const cartCount = await getCartCount(request);\n  return json({ cartCount });\n}\n\nexport default function App() {\n  const { cartCount } = useLoaderData<typeof loader>();\n\n  return (\n    <>\n      <Outlet />\n      <FloatingCartButton cartCount={cartCount} />\n    </>\n  );\n}\n```\n\n### 5. Add Styles\n\nImport the Tailwind CSS configuration or add the styles to your app:\n\n```tsx\n// In your root.tsx or layout\nimport \"@danielkmwangangi/remix-ecommerce/styles\";\n```\n\n## Available Routes\n\n### Customer-Facing Routes\n\n- `/shop` - Product listing page\n- `/shop/products/:id` - Product detail page\n- `/cart` - Shopping cart\n- `/checkout` - Checkout page\n- `/order-confirmation` - Order confirmation page\n\n### Admin Routes\n\n- `/admin` - Admin dashboard\n- `/admin/products` - Product management\n- `/admin/orders` - Order management\n- `/admin/orders/:id` - Order detail page\n\n## Database Schema\n\nThe package includes a complete database schema for:\n\n- **Products**: Product catalog with images, pricing, inventory\n- **Categories**: Product categorization\n- **Cart Items**: Session-based shopping cart\n- **Orders**: Order management\n- **Order Items**: Order line items\n- **Payments**: Payment tracking (optional)\n\nSee `database/schema.sql` for the complete schema.\n\n## API Reference\n\n### Products\n\n```typescript\nimport { getProducts, getProduct, createProduct } from \"@danielkmwangangi/remix-ecommerce\";\n\n// Get products with filters\nconst products = await getProducts({\n  page: 1,\n  per_page: 12,\n  search: \"laptop\",\n  category: \"electronics\"\n});\n\n// Get single product\nconst product = await getProduct(1);\n\n// Create product (admin)\nconst newProduct = await createProduct({\n  name: \"New Product\",\n  price: 99.99,\n  // ... other fields\n});\n```\n\n### Cart\n\n```typescript\nimport { getCart, addToCart, getCartCount } from \"@danielkmwangangi/remix-ecommerce\";\n\n// Get cart\nconst cart = await getCart(request);\n\n// Add to cart\nconst updatedCart = await addToCart(request, productId, quantity);\n\n// Get cart count (for floating button)\nconst cartCount = await getCartCount(request);\n```\n\n### Components\n\n```typescript\nimport { FloatingCartButton } from \"@danielkmwangangi/remix-ecommerce\";\n\n// Use in your root layout\n<FloatingCartButton \n  cartCount={cartCount}\n  position=\"bottom-center\"  // or \"bottom-right\" | \"bottom-left\"\n  hideOnPaths={[\"/checkout\", \"/admin\"]}\n/>\n```\n\n### Orders\n\n```typescript\nimport { createOrder, getOrder } from \"@danielkmwangangi/remix-ecommerce\";\n\n// Create order\nconst order = await createOrder(request, shippingInfo, paymentIntentId);\n\n// Get order\nconst order = await getOrder(orderId);\n```\n\n## Customization\n\n### Styling\n\nThe package uses Tailwind CSS. You can customize the styles by:\n\n1. Overriding Tailwind classes in your app\n2. Using CSS modules\n3. Extending the Tailwind config\n\n### Adding Custom Fields\n\nYou can extend the database schema to add custom fields to products, orders, etc. Just make sure to update the TypeScript types accordingly.\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run development server\nnpm run dev\n\n# Build package\nnpm run build\n\n# Type check\nnpm run typecheck\n```\n\n## License\n\nMIT\n\n## Support\n\nFor issues and questions, please open an issue on the GitHub repository.\n","readmeFilename":"README.md"}