From eb9354b46a56cd32eaa26744bdf48c2895fcf375 Mon Sep 17 00:00:00 2001 From: notshop Date: Sun, 26 Apr 2026 16:34:56 +0000 Subject: [PATCH] chore: add CONFIGURE.md --- CONFIGURE.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 CONFIGURE.md diff --git a/CONFIGURE.md b/CONFIGURE.md new file mode 100644 index 0000000..61064a1 --- /dev/null +++ b/CONFIGURE.md @@ -0,0 +1,107 @@ +# NoShop Configuration Guide + +This guide covers common customizations after forking. + +--- + +## 1. Store name & branding + +**`client/src/index.css`** — change the CSS custom properties to match your brand colors: + +```css +:root { + --primary: 222 47% 20%; /* main button / link color (HSL format) */ + --background: 0 0% 100%; /* page background */ + /* ... */ +} +``` + +**`.env` / Replit Secrets**: +``` +STORE_NAME=Acme Supplements +STORE_EMAIL_FROM=orders@acmesupplements.com +``` + +**`client/src/components/layout/Footer.tsx`** — update footer links, tagline. + +--- + +## 2. Payment gateways + +### Authorize.net (default) + +NoShop uses Authorize.net Accept.js for PCI-compliant checkout — card data never touches your server. + +1. Create a sandbox account at [developer.authorize.net](https://developer.authorize.net) +2. Get your API Login ID, Transaction Key, and Public Client Key from the sandbox dashboard +3. Set secrets: `AUTHORIZE_NET_API_LOGIN_ID`, `AUTHORIZE_NET_TRANSACTION_KEY`, `AUTHORIZE_NET_PUBLIC_CLIENT_KEY` +4. Set `AUTHORIZE_NET_SANDBOX=true` while testing, `false` for live + +### Stripe (optional) + +Set `STRIPE_SECRET_KEY` and `STRIPE_PUBLISHABLE_KEY` in secrets. When both are present, customers see a "Stripe" tab at checkout. Leave them empty to disable Stripe entirely. + +--- + +## 3. Email + +NoShop uses [Resend](https://resend.com) for transactional email (magic-link login, order confirmations). + +1. Create a free Resend account +2. Verify your sending domain +3. Set `RESEND_API_KEY` and `STORE_EMAIL_FROM` + +Edit `server/email.ts` to customize email templates. + +--- + +## 4. Adding products + +Products can be added via: + +- **Admin panel** — visit `/admin/products`, click "New product" +- **Bulk import** — write a migration script that INSERTs into the `products` table with Drizzle, or use `psql` / pgAdmin directly + +The product schema lives in `shared/schema.ts`. Key fields: +- `handle` — URL slug (e.g. `omega-3-fish-oil` → `/products/omega-3-fish-oil`) +- `images` — array of image URLs (text[]) +- `status` — `active` | `draft` | `archived` +- `hsaFsa` — boolean, shows HSA/FSA badge + +--- + +## 5. Custom domain on Replit + +1. In your Replit project, go to **Settings → Custom domain** +2. Add your domain and follow the DNS instructions +3. Replit handles TLS automatically + +--- + +## 6. Database migrations + +After editing `shared/schema.ts`, run: + +```bash +npm run db:push +``` + +For a new Replit project with no existing data: + +```bash +npm run db:push # applies schema to a fresh DB +npm run db:seed # creates your first admin user +``` + +--- + +## 7. Admin credentials + +The first admin is created by `npm run db:seed`. Set these secrets before running: + +``` +ADMIN_EMAIL=you@yourdomain.com +ADMIN_PASSWORD=your-secure-password +``` + +Additional admin users can be added directly to the `admin_users` table, or you can add an "invite admin" route in `server/routes.ts`.