2.8 KiB
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:
: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.
- Create a sandbox account at developer.authorize.net
- Get your API Login ID, Transaction Key, and Public Client Key from the sandbox dashboard
- Set secrets:
AUTHORIZE_NET_API_LOGIN_ID,AUTHORIZE_NET_TRANSACTION_KEY,AUTHORIZE_NET_PUBLIC_CLIENT_KEY - Set
AUTHORIZE_NET_SANDBOX=truewhile testing,falsefor 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 for transactional email (magic-link login, order confirmations).
- Create a free Resend account
- Verify your sending domain
- Set
RESEND_API_KEYandSTORE_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
productstable with Drizzle, or usepsql/ 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|archivedhsaFsa— boolean, shows HSA/FSA badge
5. Custom domain on Replit
- In your Replit project, go to Settings → Custom domain
- Add your domain and follow the DNS instructions
- Replit handles TLS automatically
6. Database migrations
After editing shared/schema.ts, run:
npm run db:push
For a new Replit project with no existing data:
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.