# 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 6 adapter options, no-JS support, 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) - 1716+ 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 v2 ([plan](docs/plans/onboarding-ux.md)) Based on usability testing (March 2026). Reworks the entire setup flow into a single guided journey with progress bar, forgiving validation, and contextual prompts. | # | Task | Est | Status | |---|------|-----|--------| | A | Simplify initial setup to account creation only (email, password, shop name) | 1.5h | planned | | B | Guided setup flow with progress bar (multi-step, skippable, explains "why") | 4h | planned | | C | Forgiving API key validation (strip whitespace, format checks, helpful errors) | 1.5h | done | | D | Email provider setup UX rework (6 adapters, no-JS, `:has(:checked)` CSS, test email) | 2h | done | | E | Contextual prompts for skipped steps (products, checkout, order detail) | 2h | done | | F | Dashboard checklist and messaging rework | 2h | planned | | G | Coming soon page fixes (logo layout, admin login link) | 30m | done | | H | External links UX (new tabs, icons, aria labels) | 1h | done | | I | Input styling — WCAG AA/AAA compliance | 1h | done | ### Notification system overhaul ([plan](docs/plans/notification-overhaul.md)) Replace floating toast/flash messages with inline feedback and persistent top banners. ~140 flash messages across 28 files to migrate. Inline feedback for form saves, banners for page-level outcomes. | # | Task | Est | Status | |---|------|-----|--------| | 1 | Build inline feedback component | 1.5h | done | | 2 | Build persistent top banner component (replaces flash) | 1.5h | done | | 3 | Migrate admin forms to inline feedback (theme, pages, settings, email, providers) | 3h | in progress | | 4 | Migrate remaining admin pages (media, products, activity, newsletter, redirects, nav) | 2h | planned | | 5 | Migrate shop pages (cart, contact, checkout, auth) | 2h | planned | | 6 | Migrate setup wizard notifications | 1h | planned | | 7 | Remove old flash/toast CSS and JS | 30m | planned | ### Live site editor ([plan](docs/plans/live-site-editor.md)) On-site editing overlay for admins: browse the real shop with a sidebar for theme and page editing. Inline contenteditable for text, live CSS variable injection for theme changes. Responsive layout (split view on desktop, overlay on mobile). | Phase | Description | Est | Status | |---|---|---|---| | 1 | Design: sketch approaches, pick one | 2h | planned | | 2 | Extract shared components from theme editor and page editor | 4h | planned | | 3 | Build editor wrapper LiveView with sidebar shell | 3h | planned | | 4 | Theme editing in sidebar (re-use theme controls, live CSS vars) | 3h | planned | | 5 | Block list and block settings in sidebar | 3h | planned | | 6 | Block selection: click-to-select with highlight on page | 2h | planned | | 7 | Inline text editing with contenteditable + phx-hook | 4h | planned | | 8 | Responsive layout (split view / overlay) | 2h | planned | | 9 | Save/discard/undo flow | 2h | planned | | 10 | Edit mode toggle (floating button for admins on shop pages) | 1h | planned | | 11 | Polish and testing | 4h | planned | ### Quick fixes (from usability testing) | # | Task | Est | Status | |---|---|---|---| | 1 | Fix double radio button dots in theme editor | 30m | done | ### 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 (v2) | | [notification-overhaul.md](docs/plans/notification-overhaul.md) | Planned | | [live-site-editor.md](docs/plans/live-site-editor.md) | Design exploration | | [profit-aware-pricing.md](docs/plans/profit-aware-pricing.md) | Planned |