datewise/HANDOFF.md
metatroncubeswdev 21a2de257a docs: handoff after listing, screencast and review fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 09:26:37 -04:00

76 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Datewise: session handoff (2026-10-16)
Read this first in a new session. It covers everything needed to finish the Shopify App Store submission.
Process: follow the `shopify-app-launch` skill (Offerlyst was the first app through it).
## What Datewise is
Shopify app **"Datewise: Delivery & Pickup"**: customers choose store pickup, local delivery or shipping, then a date and a time slot, in the cart. Capacity holds, rush days and waitlist, checkout guard on every plan, reminders, run sheets.
Forked from the SlotSure reference build (`../slotsure/`); some features were ported from the old app (`../shipping-app/`).
## Key facts
| | |
|---|---|
| Repo | https://git.metatroncube.in/MetatroncubeSoftwareSolutions/datewise.git (branch `main`) |
| Local path | `D:\MCS_Repos\2026\claude_shopify_shipping_app\datewise` |
| Production | https://datewise.metatronlabz.com (VPS `/opt/datewise`, Nginx → `127.0.0.1:3320`; runbook `deploy/README.md`) |
| Shopify app | name "Datewise: Delivery & Pickup", **handle `datewise-delivery`** (`datewise` is taken), client_id `7e7c4baa00daac7fc6909336039d40b5` |
| Partner Dashboard | partners.shopify.com/2451848/apps/435762528257 |
| Dev Dashboard | dev.shopify.com/dashboard/129011982/apps/435762528257 |
| Dev store | `veloxautomotive` (storefront password protected: **the user types the password**) |
| Latest released version | `datewise-delivery-5` |
| API version | 2026-01 (upgrade after launch) |
| Stack | React Router 7, Polaris web components, Prisma + Postgres, JS Functions, theme app extension |
## Done
- **Code:** all features working end to end. Fixes this round: CSRF origin behind Nginx (`react-router.config.ts` `allowedActionOrigins`); shop-record self-heal and install race; plan location limit counts switched-on locations; widget empty state, width and contrast; bookings list polish; Shopify `userErrors` logged.
- **Security:** customer PII encrypted at rest (AES-256-GCM via Prisma extension, `app/lib/pii.server.ts`); keyed-hash lookups; **access log** of staff views (`DataAccessLog`); `SECURITY.md`; privacy/terms pages live.
- **Server:** latest code deployed, migrations 0001–0003 applied, **encrypted nightly backups** (cron 3 AM, key `/root/.datewise-backup-key`).
- **Partner Dashboard:**
- **Public distribution** selected (irreversible).
- **Protected customer data:** step 1 done (Name/Email/Phone/Address; reasons Store management + App functionality); step 2 done (16/16).
- **Network access** for UI extensions enabled.
- **Dev store setup:**
- App installed.
- "Shop location" taking bookings; Shopify **Local pickup** on at that location (the user's home address: **never show it unblurred in public assets**).
- Theme block + app embed saved.
- Checkout guard, delivery label and payment rules on.
- **Bogus test gateway** active.
- **Verified:**
- Test order #1001 (pickup Oct 15, 12–1 PM) → booking confirmed, pickup line renamed "Shop location — Thu, Oct 15, 12 PM–1 PM", order attributes and tags.
- Checkout blocked without a time ("Please choose a delivery or pickup time…").
- **Listing assets (`brand/`):**
- `shopify/app-icon-1200x1200.png`, `shopify/feature-image-1600x900.png`.
- 6 screenshots in `screenshots/listing/` + `alt-text.txt`.
- `LISTING.md` (all listing text + reviewer testing steps).
- `SCREENCAST.md` (14 scenes, captions, YouTube title/description).
## Done 2026-10-16
- Cancellation of #1001 verified; uninstall + reinstall test passed (data kept; checkout functions now auto-restore on reinstall, `settings.checkoutFunctions`).
- Listing complete, 0 issues: text, category tags, icon, feature image, 6 screenshots (alt ≤64), Manual pricing plans `starter`/`growth`/`pro`, screencast https://youtu.be/VZW767L6bNo (Unlisted).
- Self-review (live requirements) run; fixed 2.3.1 (`/auth/login` has no shop form) and 1.2.2 (test charges on dev stores via `shop.plan.partnerDevelopment`; plan approval opens Shopify's page instead of a 401). Growth approve + downgrade to Starter tested on veloxautomotive.
- Review page: capabilities embedded + online store; onboarding confirmed; AI self review marked done; automated checks run.
## Left, in order
1. Automated checks all green (re-run if any fail).
2. **User:** add the storefront password at the end of the listing's testing instructions, Save.
3. **User decision:** turn off the old Metatron-delivery app embed on veloxautomotive (its cart widget sits next to checkout).
4. **User** ticks "I've reviewed all the App Store Requirements"; Claude clicks **Submit for review** only after an explicit yes.
## Known notes / follow-ups (not blockers)
- Theme check warns `AssetSizeAppBlockJavaScript` (18 KB raw, ~7 KB gzipped). Non-blocking.
- Shopify's own pickup card shows its "Usually ready in 24 hours" estimate; the setup guide tells merchants to set the shortest pickup time.
- Billing plan test (choose Growth → test charge → **user clicks Approve**) not yet done; worth doing before or with the screencast scene 13.
- Webhook API version 2026-01; upgrade within ~12 months.
## Rules for the next session
- Secrets never in chat or Git. The user types every password and card number.
- Ask before irreversible clicks: Submit for review, deleting apps or orders, OAuth/permission approvals not already approved.
- After code changes: `npx tsc --noEmit`, `npx vitest run`, commit + push, then the user runs on the server: `cd /opt/datewise && git pull && docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d --build app worker`. Extension changes: `CI=1 shopify app deploy --allow-updates --message "..."` from `datewise/`.