berrypod/PROGRESS.md

113 lines
7.1 KiB
Markdown
Raw Normal View History

# Berrypod Progress
> Single source of truth for project status and task tracking.
## Current status
Tier 1 MVP complete. Tier 2 production readiness complete (except Litestream and e2e tests). Tier 3 compliance and quality complete. Tier 3.5 business tools mostly complete (activity log, order lookup, abandoned cart all done). Tier 4 growth and content mostly complete (page editor, legal pages, media library, custom CMS pages all done). Newsletter and product page improvements remain.
**What's working:**
- Complete shop: home, collections, products, cart, checkout, about, contact, custom CMS pages, legal pages
- Theme editor with 8 presets, instant switching, full customisation
- Image optimisation pipeline (AVIF/WebP/JPEG responsive variants)
- Printify + Printful integration (sync, orders, shipping, webhooks, mockup enrichment)
- Stripe Checkout with order persistence, webhook handling, shipping costs
- Session-based cart (cross-tab sync, drawer + page, quantity controls)
- FTS5 full-text search with live modal, keyboard nav, ARIA
- Privacy-first analytics with comparison mode, filtering, CSV export
- Database-driven page builder with 26 block types, undo/redo, live editing
- Custom CMS pages with data-driven navigation, page templates, SEO
- Media library with alt text, usage tracking, orphan management
- Activity log with real-time global feed, order timeline, contextual retry
- URL redirects with auto-redirect on slug change, dead link monitoring
- Legal page generator with auto-regeneration from settings
- Abandoned cart recovery (GDPR-compliant, single email)
- Favicon generation from source image (PNG variants, SVG dark mode, webmanifest)
- Complete SEO (OG/Twitter cards, JSON-LD, sitemap, canonical URLs, meta descriptions)
- Email settings admin with 10 adapter options and test email
- No-JS support across all key flows
- Fully Tailwind-free CSS (12 KB gzipped shop+theme, 95 KB gzipped admin total)
- CI pipeline (compile warnings, format, credo, dialyzer, tests)
- Deployed on Fly.io with observability (LiveDashboard, ErrorTracker, structured logging)
- 1679+ tests passing, 99-100 PageSpeed mobile
## Next up
### Admin CSS refactor ([plan](docs/plans/css-migration.md)) — Complete
All 4 phases done. Tailwind utility clone deleted, all templates migrated to semantic classes, layout primitives added, `@layer` cascade in place. Post-refactor cleanup: dead CSS removal (9 classes), color-mix token extraction (5 `--admin-text-*` tokens replacing 80 inline calls), and theme CSS extracted into standalone `theme.css` bundle shared across all page types (eliminates 28 KB duplication). Image optimizer hardened against tiny placeholder stubs. Theme editor mobile overlay bug fixed.
### Profit-aware pricing & sales ([plan](docs/plans/profit-aware-pricing.md))
| # | Task | Depends on | Est | Status |
|---|------|------------|-----|--------|
| 63 | Fix Printful cost sync (cross-reference catalog API for variant costs) | — | 45m | planned |
| 64 | Cost snapshot on orders (`unit_cost` on order_items, `total_cost`/`gross_profit` on orders) | 63 | 1.5h | planned |
| 65 | Exact Stripe fees (fetch from Balance Transaction API post-payment, not estimated) | 64 | 45m | planned |
| 66 | Tax toggle + Stripe Tax (shop country, registered Y/N, `automatic_tax` on checkout) | 65 | 1.5h | planned |
| 67 | Admin profit dashboard (per-product margins, per-order profit, overall P&L) | 64, 65, 66 | 3h | planned |
| 68 | Profit-aware price editor (show margin/profit when setting prices, warn on low margin) | 67 | 2h | planned |
| 69 | Sales & promotions (% or fixed discount, scoped to catalogue/category/products, scheduled) | 68 | 3h | planned |
| 70 | Margin guard on sales (prevent discounts that breach minimum profit threshold) | 69 | 1h | planned |
| 71 | Announcement bar (dismissable shop banner for active sales) | 69 | 1.5h | planned |
### Onboarding UX improvements ([plan](docs/plans/onboarding-ux.md))
| # | Task | Priority | Est | Status |
|---|------|----------|-----|--------|
| 1 | Redirect to dashboard after wizard completion with welcome flash | High | 30m | planned |
| 2 | Add shipping setup to checklist, gate "Go live" on shipping existing | High | 1h | planned |
| 3 | Add shop settings to checklist (name, currency) | High | 45m | planned |
| 4 | Make checklist collapsible instead of dismissable | Medium | 15m | planned |
| 5 | Add test order guidance (test card number, what to expect) | Medium | 45m | planned |
| 6 | Skip completed wizard steps on revisit | Medium | 1h | planned |
| 7 | Better provider connection error messages with help links | Medium | 30m | planned |
| 8 | Add theme customisation tips to checklist | Low | 15m | planned |
| 9 | Smarter "Sync products" checklist link | Low | 15m | planned |
| 10 | Add email setup as optional checklist item | Low | 30m | planned |
### Platform site
| # | Task | Depends on | Est | Status |
|---|------|------------|-----|--------|
| 73 | Platform/marketing site — brochure, pricing, sign-up | — | TBD | planned |
| 74 | Separation of concerns: platform site vs AGPL open source core | 73 | TBD | planned |
## Future enhancements
Tracked in [ROADMAP.md](ROADMAP.md) — includes Litestream backup, e2e/a11y tests, AGPL licensing, security, newsletter, product reviews, hosted platform infrastructure, i18n, data export/import.
## Plan files
All plans in [docs/plans/](docs/plans/). Completed plans are kept as architecture references.
| Plan | Status |
|------|--------|
| [admin-redesign.md](docs/plans/admin-redesign.md) | Complete |
| [admin-font-loading.md](docs/plans/admin-font-loading.md) | Complete |
| [admin-ux-polish.md](docs/plans/admin-ux-polish.md) | Complete |
| [setup-wizard.md](docs/plans/setup-wizard.md) | Complete |
| [setup-and-launch.md](docs/plans/setup-and-launch.md) | Complete |
| [setup-auto-confirm.md](docs/plans/setup-auto-confirm.md) | Complete |
| [email-settings.md](docs/plans/email-settings.md) | Complete |
| [search.md](docs/plans/search.md) | Complete |
| [shipping-sync.md](docs/plans/shipping-sync.md) | Complete |
| [printful-integration.md](docs/plans/printful-integration.md) | Complete |
| [printify-integration-research.md](docs/plans/printify-integration-research.md) | Reference |
| [provider-strategy.md](docs/plans/provider-strategy.md) | Reference |
| [css-migration.md](docs/plans/css-migration.md) | Complete |
| [analytics-v2.md](docs/plans/analytics-v2.md) | Complete |
| [page-builder.md](docs/plans/page-builder.md) | Complete |
| [media-library.md](docs/plans/media-library.md) | Complete |
| [custom-pages.md](docs/plans/custom-pages.md) | Complete |
| [image-optimization.md](docs/plans/image-optimization.md) | Complete |
| [products-context.md](docs/plans/products-context.md) | Complete |
| [dry-refactor.md](docs/plans/dry-refactor.md) | Complete |
| [abandoned-cart.md](docs/plans/abandoned-cart.md) | Complete |
| [activity-log.md](docs/plans/activity-log.md) | Complete |
| [favicon.md](docs/plans/favicon.md) | Complete |
| [legal-page-generator.md](docs/plans/legal-page-generator.md) | Complete |
| [url-redirects.md](docs/plans/url-redirects.md) | Complete |
| [onboarding-ux.md](docs/plans/onboarding-ux.md) | Planned |
| [profit-aware-pricing.md](docs/plans/profit-aware-pricing.md) | Planned |