# Berrypod Roadmap

> Forward-looking vision and planned features. For current status, see [PROGRESS.md](PROGRESS.md).

## What's done

Tiers 1-3 are complete. The shop handles real orders end-to-end: browse products, add to cart, Stripe Checkout, order submission to Printify/Printful, fulfilment tracking, transactional emails. Full admin with theme editor, page builder, analytics, media library, activity log, URL redirects, and dead link monitoring. Tailwind-free CSS, 99-100 PageSpeed, 1679+ tests.

See [PROGRESS.md](PROGRESS.md) for the full list.

---

## Profit-aware pricing & sales

Complete cost visibility for shop owners. [Plan](docs/plans/profit-aware-pricing.md).

- Fix Printful cost sync (catalog API cross-reference for variant costs)
- Snapshot `unit_cost` on order items at time of sale
- Exact Stripe fees from Balance Transaction API (not estimated)
- Tax as a toggle: Stripe Tax at checkout, "inc. VAT" / "+ tax" display based on shop country
- Admin profit dashboard: per-product margins, per-order P&L, overall business health
- Price editor shows live margin as you set prices
- Sales & promotions: time-limited, scoped to catalogue/category/products, % or fixed
- Margin guard: prevent discounts that breach minimum profit threshold
- Announcement bar for active sales

## Production hardening

- **Litestream / SQLite replication** — continuous backup to S3-compatible storage with point-in-time recovery. For the hosted platform, evaluate Turso/libSQL with embedded read replicas
- **End-to-end & accessibility tests** — Wallaby browser tests for critical flows with A11yAudit (axe-core) assertions. WCAG 2.1 AA compliance
- **Security** — evaluate Paraxial.io for runtime security monitoring, bot detection, rate limiting
- **AGPL licensing & code hosting** — proper LICENSE file, contribution guidelines, release process. Decide on GitHub vs Codeberg vs self-hosted Forgejo

## Newsletter & email marketing

Email list collection (signup forms on shop pages). Campaign sending for product launches and sales. Simple to start: collect emails, send via Swoosh. Ties into sales & promotions for sale announcement blasts.

## SEO settings

Comprehensive SEO tooling to rival best-in-class WordPress plugins (Yoast, RankMath) and other 2026 best-of-breed SEO tools. Needs a full planning session to scope.

Potential areas:
- Per-page SEO scoring/analysis with actionable suggestions
- Structured data / JSON-LD beyond the basics (FAQ, HowTo, product reviews, breadcrumbs)
- XML sitemap with priority/frequency hints, image sitemaps
- Canonical URL management, hreflang for multi-language
- Open Graph and Twitter card previews in the editor
- Internal link suggestions
- Readability analysis
- Search console integration
- Redirect chains and broken link detection (partially done via URL redirects feature)
- Core Web Vitals monitoring

## Multiple print providers

Support connecting multiple print providers simultaneously during setup and in general use. Route products to different providers based on product type, cost, or seller preference. Allow experimentation with providers before committing.

## Product page improvements

- Pre-checkout variant validation (verify provider availability)
- Cost change monitoring/alerts (warn if provider costs increased)
- Better image gallery (zoom, multiple angles)
- Product reviews system

## Platform vision

### Marketing site
Berrypod.com as the public face: brochure pages, pricing, comparison with Shopify/Squarespace, sign-up flow, demo store. Clear separation between the commercial platform site and the AGPL open source core.

### Hosted platform infrastructure
Multi-tenancy with per-tenant databases. OAuth connect flows for providers (Printify, Printful) and payments (Stripe Connect). The setup UI already supports this: check for OAuth credentials and show the connect button, fall back to API key form on self-hosted.

### Migration & export
Let shop owners export their data (products, orders, theme settings). Import from Shopify, WooCommerce. Portable data as a selling point for the self-hosted story.

### Internationalisation
Multi-language via Gettext, currency formatting, RTL layout support. Note: `ex_money`/`ex_cldr` currently only used for GBP formatting but add ~13 MB to the release. Consider replacing with a lightweight `format_price/2` until proper locale-aware formatting is needed.

---

## Design philosophy

1. **"One theme, infinite variations"** — one solid foundation with curated customisation
2. **Constrained creativity** — limit choices to prevent poor design outcomes
3. **No professional photography required** — works with product mockups
4. **Mobile-first** — all features work on touch devices
5. **Ethical design** — no dark patterns or fake urgency
6. **Privacy-first** — cookie-free analytics, GDPR-compliant cart recovery, no tracking pixels
