docs: add prioritised roadmap with all planned features

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jamey 2026-02-07 20:28:28 +00:00
parent d65eb725f7
commit e6f8d7fa2a

View File

@ -19,14 +19,43 @@
- Search modal with keyboard shortcut
- Demo content polished and ready for production
**Next Up:**
- Orders & Fulfillment (Printify submission)
**Next up:** Order management and fulfilment (Tier 1)
## Next Up
## Roadmap
1. **Orders & Fulfillment** - Submit orders to Printify after payment
2. **Email Notifications** - Order confirmation emails
3. **Hosted Platform** - Multi-tenancy, Stripe Connect for customer shops
### Tier 1 — MVP (can take real orders and fulfil them)
1. **Order management admin** — Admin UI to view orders, filter by status, see order details and line items. The orders context and schemas exist, this is purely the admin LiveView.
2. **Orders & fulfilment** — Submit paid orders to Printify via their API. Track fulfilment status (submitted → in production → shipped → delivered). Handle shipping notifications and tracking numbers.
3. **Transactional emails** — Order confirmation email on payment. Shipping notification with tracking link. Use Swoosh (already configured) with a simple HTML template.
4. **Default content pages** — Static pages for terms of service, delivery & refunds policy, and privacy policy. Needed for legal compliance before taking real orders. Can be simple markdown-rendered pages initially, upgraded to editable via page editor later.
### Tier 2 — Production readiness (can deploy and run reliably)
5. **Hosting & deployment** — Fly.io or similar deployment config. Release configuration, runtime env setup, health checks. Observability: structured logging, error tracking (Sentry or similar), basic metrics.
6. **Litestream / SQLite replication** — Litestream for continuous SQLite backup to S3-compatible storage. Point-in-time recovery. Simple sidecar process, no code changes needed, works with vanilla SQLite. For the hosted platform (Tier 5), evaluate [Turso](https://turso.tech/) (libSQL fork of SQLite) with embedded read replicas via [ecto_libsql](https://github.com/ocean/ecto_libsql) adapter — gives multi-node reads without a separate replication daemon, but adds a dependency on the libSQL fork.
7. **CI pipeline** — All checks implemented as mix aliases (`mix ci` wrapping `mix precommit` + credo + dialyzer). CI config is a thin wrapper that calls `mix ci` — portable across GitHub Actions, Forgejo Actions, Woodpecker, or plain SSH. No proprietary CI dependencies. Custom mix tasks for anything project-specific (e.g. `mix lighthouse`). Oban stays for runtime background jobs, not CI.
8. **PageSpeed in CI** — Lighthouse CI to catch regressions. Fail the build if score drops below threshold. Protects the current 100% score.
9. **End-to-end tests** — Wallaby or similar for browser-based tests of critical flows: browse → add to cart → checkout → order confirmation. Covers the full happy path plus key error cases.
### Tier 3 — Compliance & quality
10. **Accessibility (a11y)** — Audit against WCAG 2.1 AA. Focus management, ARIA labels, keyboard navigation, colour contrast. Axe-core integration in CI.
11. **Privacy-respecting analytics** — Self-hosted, cookie-free analytics. Plausible, Umami, or a lightweight custom solution. No Google Analytics, no third-party tracking. GDPR-friendly by design.
12. **AGPL licensing & code hosting** — Currently AGPL-3.0. Decide on GitHub vs Codeberg vs self-hosted Forgejo. Set up proper LICENSE file, contribution guidelines, and release process.
13. **Security (Paraxial.io)** — Runtime application security monitoring for Elixir. Bot detection, rate limiting, vulnerability scanning. Evaluate whether it fits the self-hosted model.
### Tier 4 — Growth & content
14. **Page editor** — Database-driven pages with drag-and-drop sections. Extend the theme system to custom pages beyond the defaults. Replaces the static content pages from Tier 1 with editable versions.
15. **Newsletter & email marketing** — Email list collection (signup forms). Campaign sending for product launches, sales. Can be simple initially (collect emails, send via Swoosh) or integrate with a service.
16. **Product page improvements** — Pre-checkout variant validation (verify Printify availability). Cost change monitoring/alerts. Better image gallery (zoom, multiple angles).
### Tier 5 — Platform vision
17. **Hosted platform** — Marketing/brochure site for SimpleShop as a service. Subscribe/sign-up flow. Multi-tenancy with per-tenant databases. Stripe Connect for customer shops (each merchant connects their own Stripe account via OAuth).
18. **Migration & export** — Let shop owners export their data (products, orders, customers, theme settings). Import from other platforms (Shopify, WooCommerce). Portable data as a selling point for the self-hosted story.
19. **Internationalisation (i18n)** — Multi-language support via Gettext (already in Phoenix). Currency formatting (ex_cldr already in deps). RTL layout support. Per-shop locale configuration.
---
@ -142,20 +171,22 @@ See: [ROADMAP.md](ROADMAP.md) for design notes
- Disconnect button clears keys from DB and Application env
- CSSCache test startup crash fixed (handle_continue pattern)
### Orders & Fulfillment
**Status:** Planned
### Orders & Fulfilment
**Status:** In progress — schemas and checkout done, fulfilment pending (Tier 1)
- [x] Orders context with schemas
- [ ] Order submission to Printify
- [ ] Order status tracking
- [ ] Customer notifications
- [x] Orders context with schemas (ff1bc48)
- [x] Stripe Checkout integration with webhook handling
- [ ] Order management admin UI (Roadmap #1)
- [ ] Printify order submission (Roadmap #2)
- [ ] Fulfilment status tracking (Roadmap #2)
- [ ] Transactional emails (Roadmap #3)
See: [docs/plans/products-context.md](docs/plans/products-context.md) for schema design
### Page Builder
**Status:** Future
### Page Editor
**Status:** Future (Tier 4)
Database-driven pages with drag-and-drop sections.
Database-driven pages with drag-and-drop sections. Initially, default content pages (terms, privacy, delivery) will be static templates (Tier 1), later made editable via the page editor.
See: [docs/plans/page-builder.md](docs/plans/page-builder.md) for design