From 54ff4a44f74e2ccca3c81fdcf08c0789a0b5789c Mon Sep 17 00:00:00 2001 From: notshop Date: Sun, 26 Apr 2026 16:34:56 +0000 Subject: [PATCH] chore: add README.md --- README.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fd4997c..0972a62 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,94 @@ -# notshop-bundle +# NoShop -Open-source sovereign commerce stack — the exact stack running Naturologie.com after exiting Shopify Plus. MIT License. \ No newline at end of file +**Open-source headless commerce for Replit.** Fork it, configure secrets, and have a production-ready store running in minutes. + +Live demo: [naturologie.com](https://naturologie.com) +Repo: [git.wellspr.ing/WellBuilder/notshop-bundle](https://git.wellspr.ing/WellBuilder/notshop-bundle) + +--- + +## Features + +- **Full storefront** — product grid, product detail, cart drawer, checkout +- **Authorize.net** — primary payment gateway via Accept.js (PCI-compliant tokenized nonces) +- **Stripe** — optional secondary gateway (env-var toggle) +- **Magic-link auth** — passwordless customer sign-in via Resend email +- **Account dashboard** — order history with tracking +- **Discount codes** — percentage or fixed, usage limits, expiry +- **Admin panel** — orders, products, customers, discounts with full CRUD +- **PostgreSQL + Drizzle ORM** — type-safe schema, one-command migrations +- **React 18 + Vite** — instant HMR in dev, single bundle in production +- **TypeScript** — end-to-end type safety + +--- + +## Quick start on Replit + +1. Fork this repo on [git.wellspr.ing](https://git.wellspr.ing/WellBuilder/notshop-bundle) +2. Import the fork into Replit (Import from Git) +3. Add [required secrets](#required-secrets) in **Replit → Secrets** +4. Run the dev workflow — it auto-runs `npm run dev` +5. Push your schema: `npm run db:push` +6. Seed first admin: `npm run db:seed` +7. Visit `/admin` and log in + +--- + +## Required secrets + +| Secret | Description | +|--------|-------------| +| `DATABASE_URL` | PostgreSQL connection string | +| `SESSION_SECRET` | Long random string for session signing | +| `AUTHORIZE_NET_API_LOGIN_ID` | Authorize.net API login ID | +| `AUTHORIZE_NET_TRANSACTION_KEY` | Authorize.net transaction key | +| `AUTHORIZE_NET_PUBLIC_CLIENT_KEY` | Authorize.net public client key (Accept.js) | +| `AUTHORIZE_NET_SANDBOX` | `true` for sandbox, `false` for live | +| `RESEND_API_KEY` | [Resend](https://resend.com) API key for magic-link emails | +| `STORE_NAME` | Display name of your store | +| `STORE_EMAIL_FROM` | From-address for transactional emails | + +## Optional secrets (Stripe) + +| Secret | Description | +|--------|-------------| +| `STRIPE_SECRET_KEY` | Stripe secret key — enables Stripe at checkout | +| `STRIPE_PUBLISHABLE_KEY` | Stripe publishable key (exposed to frontend) | + +> When `STRIPE_SECRET_KEY` is set, customers see a "Stripe" payment option alongside the Authorize.net card form. + +--- + +## Project structure + +``` +notshop-bundle/ +├── client/src/ +│ ├── pages/ # Storefront pages (shop, product, cart, checkout, account) +│ ├── pages/admin/ # Admin panel (dashboard, orders, products, customers, discounts) +│ ├── components/layout/ # Header, Footer, CartDrawer +│ ├── hooks/ # use-cart, use-toast +│ ├── lib/ # queryClient + apiRequest +│ └── index.css # Tailwind + CSS variables (customize theme here) +├── server/ +│ ├── routes.ts # All API endpoints +│ ├── db.ts # Drizzle + pg pool +│ ├── auth.ts # Magic-link auth +│ ├── payments/ +│ │ ├── authorizenet.ts # Accept.js nonce charge, vault, refund +│ │ └── stripe.ts # Stripe payment intent +│ └── email.ts # Resend email helpers +├── shared/ +│ └── schema.ts # Drizzle schema (single source of truth) +├── scripts/ +│ └── seed-admin.ts # Create first admin user +├── .env.example # Copy to .env and fill in values +└── CONFIGURE.md # Customization guide +``` + +--- + +## Contributing + +Submit PRs to [WellBuilder/notshop-bundle](https://git.wellspr.ing/WellBuilder/notshop-bundle). +License: MIT