Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
153 lines
7.0 KiB
Markdown
153 lines
7.0 KiB
Markdown
# Production-ready report (Descrybe v2)
|
|
|
|
**Date:** 2026-08-04 (blocker close-out pass)
|
|
**Repo:** `f:/laragon/www/_MY/descrybe-v2`
|
|
**Scope:** Local staging rehearsal + honesty about LIVE vs mocked vs seed-only
|
|
**Builds (this pass):** `apps/api` `go build ./...` → **exit 0**; `apps/web` `npm run check` → re-run below
|
|
|
|
Related: [production-checklist.md](production-checklist.md), [production-readiness.md](production-readiness.md), [security-notes.md](security-notes.md), [go-live-checklist.md](go-live-checklist.md), [store-connectors.md](store-connectors.md), [demo-user.md](demo-user.md), [perf-notes.md](perf-notes.md).
|
|
|
|
---
|
|
|
|
## Executive verdict
|
|
|
|
| Question | Answer |
|
|
|----------|--------|
|
|
| **Production-ready for public cutover?** | **NO** |
|
|
| **Local staging / demo rehearsal?** | **GO** — core catalog → process → export → credits → auth → Woo mock REST → Shopify dry-run are proven |
|
|
| **Ship to paying customers on the public internet today?** | **NO-GO** until cutover / SMTP / real Stripe / prod env items below are cleared |
|
|
|
|
**One-line:** Descrybe v2 is **staging-demo ready** with Woo live-client proof (`mock-woo`) and Shopify dry-run smoke; it is **not** public-cutover-ready while migration/email/SMTP/`APP_ENV=production` and **real Stripe keys** remain open.
|
|
|
|
---
|
|
|
|
## Demo login
|
|
|
|
| Field | Value |
|
|
|-------|--------|
|
|
| Web | http://127.0.0.1:5174/login (prefer **5174**) |
|
|
| API | http://127.0.0.1:8080 (`/healthz`, `/readyz`) |
|
|
| Email | `demo@descrybe.local` |
|
|
| Password | `DemoPass123!` |
|
|
| Tenant | **Local Demo Co** |
|
|
| Plan (verified) | **Enterprise** (`GET /api/billing/credits` → `plan.name=Enterprise`, 1,000,000 credits) |
|
|
| API key (local only) | `dk_demo_local_descrybe_test_key_v1` |
|
|
|
|
Full bootstrap: [demo-user.md](demo-user.md). **Do not use demo credentials in production.**
|
|
|
|
---
|
|
|
|
## Build reconcile (this pass)
|
|
|
|
| Check | Result | Notes |
|
|
|-------|--------|-------|
|
|
| `cd apps/api && go build ./...` | **PASS** | Includes `cmd/mock-woo` |
|
|
| API/worker restart | **Done** | Parallel product list + Shopify claim loaded |
|
|
| Goose DB version | **18** | Includes `017_shopify` + `018_list_hotpath_indexes` |
|
|
| `cd apps/web && npm run check` | (see footer) | |
|
|
|
|
---
|
|
|
|
## Criteria scorecard
|
|
|
|
| Criterion | Status | Evidence | Notes |
|
|
|-----------|--------|----------|-------|
|
|
| No user-facing `go run` / seed CLI text | **PASS** | Static + [production-readiness.md](production-readiness.md) | CLI stays in docs/README |
|
|
| Sidebar simplified | **PASS** | [tutorial-live.md](tutorial-live.md) | Primary + More |
|
|
| Mobile OK | **PASS with polish** | [mobile-audit.md](mobile-audit.md) | |
|
|
| Woo + Shopify + feeds | **PASS (local)** | [live-woo-test.md](live-woo-test.md), [live-shopify-test.md](live-shopify-test.md), live feed docs | Woo via `mock-woo` REST; Shopify dry-run; feeds LIVE |
|
|
| Stripe | **MOCK OK for local** | [live-stripe-test.md](live-stripe-test.md), [stripe-setup.md](stripe-setup.md) | **Not a code blocker** if prod requires real keys (documented). Local keeps `STRIPE_MOCK=true` |
|
|
| Credits | **PASS** | [live-credits-test.md](live-credits-test.md) | |
|
|
| Security | **PASS (local)** | [live-auth-security.md](live-auth-security.md) | Prod needs `APP_ENV=production` |
|
|
| Perf (Go v2) | **PASS (documented)** | [perf-notes.md](perf-notes.md) | Parallel list + goose 018 indexes + export streaming |
|
|
|
|
---
|
|
|
|
## Live docs inventory
|
|
|
|
| Doc | Verdict | Class |
|
|
|-----|---------|-------|
|
|
| [live-e2e-local.md](live-e2e-local.md) | PASS 21/21 | LIVE |
|
|
| [live-credits-test.md](live-credits-test.md) | PASS | LIVE |
|
|
| [live-auth-security.md](live-auth-security.md) | 23/23 PASS | LIVE |
|
|
| [live-export-channels.md](live-export-channels.md) | PASS | LIVE |
|
|
| [live-feed-csv.md](live-feed-csv.md) | PASS | LIVE |
|
|
| [live-pipeline.md](live-pipeline.md) | PASS | LIVE |
|
|
| [live-woo-test.md](live-woo-test.md) | **PASS** | **LIVE client ↔ mock-woo HTTP** (not seed) |
|
|
| [live-shopify-test.md](live-shopify-test.md) | **PASS** | **Dry-run** Admin API path |
|
|
| [live-stripe-test.md](live-stripe-test.md) | PASS mock UI | **MOCK** — real keys required for prod |
|
|
| [perf-notes.md](perf-notes.md) | Written | Go v2 hot paths |
|
|
| [shopify-connector.md](shopify-connector.md) | Present | Schema 017 + UI |
|
|
|
|
---
|
|
|
|
## Honest LIVE vs mocked vs seed matrix
|
|
|
|
| Area | Class | Proven |
|
|
|------|-------|--------|
|
|
| Auth / CSRF / API keys | **LIVE** | Real HTTP against API |
|
|
| Catalog / feeds / process / export | **LIVE** | Multi-MB public exports |
|
|
| Credits debit | **LIVE** | Wallet deltas |
|
|
| WooCommerce REST | **LIVE ↔ mock-woo** | Test Connection + product push + orders/reviews pull ([live-woo-test.md](live-woo-test.md)) |
|
|
| Shopify Admin API | **DRY-RUN LIVE path** | Test + product sync + orders ([live-shopify-test.md](live-shopify-test.md)); real shop token still optional |
|
|
| Stripe Checkout | **MOCK** | Local only; **prod requires real `STRIPE_SECRET_KEY` + webhook secret** ([stripe-setup.md](stripe-setup.md)) |
|
|
| Production HTTPS / SMTP / cutover | **NOT PROVEN** | [go-live-checklist.md](go-live-checklist.md) |
|
|
|
|
---
|
|
|
|
## Remaining BLOCKERS (public cutover)
|
|
|
|
1. **BLOCKER — Production cutover / migration / SMTP**
|
|
Synthetic `@legacy.local` emails, membership roles, SMTP set-password proof, `APP_ENV=production` fail-closed env, object storage, etc. ([go-live-checklist.md](go-live-checklist.md)).
|
|
|
|
2. **BLOCKER — Real Stripe for production billing**
|
|
Local mock is intentional and documented. **Shipping paid plans requires** live/testmode Stripe keys + signed webhooks. Not a local staging blocker. Exit: Stripe CLI/testmode Checkout + webhook without leaving demo on Starter.
|
|
|
|
3. **SOFT — AI provider per environment**
|
|
Local AI PASS depended on LAN Green Chat / configured OpenAI-compatible endpoint.
|
|
|
|
### Closed this pass (no longer blockers)
|
|
|
|
- ~~WooCommerce not LIVE-proven without seed~~ → [live-woo-test.md](live-woo-test.md) + `cmd/mock-woo`
|
|
- ~~Shopify product sync stub / missing connector docs~~ → dry-run smoke + [shopify-connector.md](shopify-connector.md) / [live-shopify-test.md](live-shopify-test.md)
|
|
- ~~No v2 `perf-notes.md`~~ → [perf-notes.md](perf-notes.md) + goose 018
|
|
|
|
---
|
|
|
|
## What is solid enough for staging demos
|
|
|
|
- Login as demo → Local Demo Co on **Enterprise**
|
|
- Feeds → map → sync → process (worker) → export
|
|
- Woo: point at `mock-woo` → Test Connection → sync products/orders/reviews
|
|
- Shopify: dry-run token → test + sync products/orders
|
|
- Credits/Billing consistency; auth CSRF + API keys
|
|
- Perf indexes + streaming exports documented
|
|
|
|
---
|
|
|
|
## Recommended next actions (ordered)
|
|
|
|
1. Stripe testmode end-to-end (non-mock) when ready to take payments
|
|
2. Clear go-live checklist migration/email/SMTP/`APP_ENV=production` before DNS cutover
|
|
3. Optional: exercise Woo against a real HTTPS store; Shopify against a real custom-app token
|
|
|
|
---
|
|
|
|
## Reconcile commands
|
|
|
|
```powershell
|
|
cd f:\laragon\www\_MY\descrybe-v2\apps\api
|
|
go build ./...
|
|
go run ./cmd/mock-woo -addr 127.0.0.1:19090 # separate terminal
|
|
|
|
cd f:\laragon\www\_MY\descrybe-v2\apps\web
|
|
npm run check
|
|
```
|
|
|
|
Demo:
|
|
|
|
```text
|
|
http://127.0.0.1:5174/login
|
|
demo@descrybe.local / DemoPass123!
|
|
```
|