3.7 KiB
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
- Fork this repo on git.wellspr.ing
- Import the fork into Replit (Import from Git)
- Add required secrets in Replit → Secrets
- Run the dev workflow — it auto-runs
npm run dev - Push your schema:
npm run db:push - Seed first admin:
npm run db:seed - Visit
/adminand 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_KEYis 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