chore: add README.md

This commit is contained in:
notshop 2026-04-26 16:34:56 +00:00
parent eb9354b46a
commit 54ff4a44f7

View file

@ -1,3 +1,94 @@
# notshop-bundle
# NoShop
Open-source sovereign commerce stack — the exact stack running Naturologie.com after exiting Shopify Plus. MIT License.
**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