notshop-bundle/README.md
2026-04-26 16:34:56 +00:00

3.7 KiB

NoShop

Open-source headless commerce for Replit. Fork it, configure secrets, and have a production-ready store running in minutes.

Live demo: naturologie.com Repo: 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
  2. Import the fork into Replit (Import from Git)
  3. Add 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 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.
License: MIT