datewise/HANDOFF.md
metatroncubeswdev 799789ca28 docs: Datewise submitted for App Store review
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 09:43:20 -04:00

80 lines
5.8 KiB
Markdown
Raw Permalink 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.
## Submitted 2026-10-16
Submitted for App Store review (status "Submitted", reviewer being assigned). Shopify emails info@metatroncubesolutions.com with numbered requirement IDs if anything needs fixing.
## Next
1. Answer reviewer emails quickly: fix, redeploy, verify, reply in the thread.
2. **App Store visibility** is "direct URL only" until "Make fully visible" is clicked (review page). Decide before or at approval; search ranking needs full visibility.
3. Consider turning off the old Metatron-delivery embed on veloxautomotive (its cart widget sits beside checkout).
4. After approval: clean up dev-store test orders, listing translations, honest first reviews, Built for Shopify later; API version upgrade within ~12 months.
## 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/`.