# CRM Stack Buyer Setup Guide

CRM Stack is a self-hosted CRM package. You own the install, the database, the domain, and the customer data.

## What You Need Before Setup

- A domain or subdomain for the CRM
- A server, VPS, or hosting target
- Stripe account access if you want checkout
- Resend or another verified email sender
- Cloudflare or another access/routing layer
- Your app name, logo, support email, and basic brand colors

## First Setup Path

1. Unpack the CRM Stack source package.
2. Copy `.env.example` to `.env.local`.
3. Open `crm-stack-outside-services-guide.md` and set up Stripe, Resend, Cloudflare, the domain, and backups.
4. Set the app URL, app name, admin email, database path, Stripe keys, and email sender.
5. Install dependencies with `npm install`.
6. Run the app locally with `npm run dev`.
7. Open `/dashboard` and confirm the first user becomes owner.
8. Create one form, one product, one booking page, and one quote.
9. Deploy the app to your server.
10. Protect `/dashboard*` and `/platform*` with your access layer.
11. Keep public routes open for forms, bookings, link pages, public sites, and Stripe webhooks.

## Outside Services Guide

Use this companion guide for beginner setup steps:

```text
/crm-stack-outside-services-guide.md
```

It covers:

- Stripe keys, products, prices, checkout, and webhooks
- Resend domain verification and sender email
- Cloudflare Access private and public route rules
- Domain and server setup
- Backup checks

## Quotes, Invoices, And Stripe

Products and quotes live inside CRM Stack. Stripe belongs to the buyer.

The current quote screen creates quote and invoice records with line items, totals, terms, notes, and manual status tracking. It does not automatically charge a customer card.

If you want customer quote payments, use one of these paths:

- Simple path: create a Stripe Payment Link in your Stripe account and paste it into the customer communication.
- Custom path: have a developer or coding assistant add a Stripe Checkout or Stripe invoice workflow that uses your CRM quote record as the source.

Do not connect the CRM to Corey's Stripe account. Use the buyer's Stripe account.

## Public Routes That Must Stay Reachable

- `/forms/*`
- `/api/forms/*`
- `/book/*`
- `/api/book/*`
- `/lp/*`
- `/go/*`
- `/sites/*`
- `/api/billing/*`

## Recommended Launch Test

- Submit a public form and confirm it creates a contact, deal, and activity.
- Create a booking page and book a test slot.
- Add products or services.
- Create a quote or invoice record.
- Start a Stripe checkout and confirm the buyer record appears.
- Send a test email from your verified sender domain.
- Confirm backups are running before using the CRM with real customers.

## When To Use Launch Setup

If APIs, domains, Stripe, email DNS, or webhooks feel confusing, use the Launch Setup option. The setup call is meant to keep the install clean, reduce guessing, and help you avoid breaking the public buyer/client routes.

## Support Contact

Use the support email from your purchase receipt or contact Corey directly from the checkout success page.
