tidy docs: condense progress, trim readme, mark plan statuses

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jamey
2026-03-01 17:15:18 +00:00
parent 580a7203c9
commit edef628214
15 changed files with 263 additions and 810 deletions

View File

@@ -23,15 +23,24 @@ mix precommit # REQUIRED before committing: compile --warning-as-errors
- **Settings** - Theme configuration persistence as JSON
- **Theme** - CSS generation, ETS caching, 8 presets (Gallery, Studio, Boutique, etc.)
- **Products** - Product/variant data synced from Printify
- **Media/Images** - Image uploads and optimization pipeline (Oban jobs)
- **Providers** - Abstraction layer for POD providers (Printify integration)
- **Products** - Product/variant data synced from Printify/Printful
- **Media/Images** - Image uploads, optimization pipeline (Oban jobs), media library
- **Providers** - Abstraction layer for POD providers (Printify + Printful)
- **Pages** - Database-driven page builder (blocks, cache, defaults, 26 block types)
- **Orders** - Order lifecycle, fulfilment tracking, provider submission
- **Shipping** - Shipping rates, country detection, exchange rates
- **Analytics** - Privacy-first pageview tracking, e-commerce funnel
- **ActivityLog** - System event logging, order timeline
- **Redirects** - URL redirects, 404 monitoring, dead link scanning
- **Newsletter** - Email list collection, campaign sending
- **Search** - FTS5 full-text search index
### Web Layer (lib/berrypod_web/)
- **live/** - LiveViews for shop pages and theme editor
- **components/page_templates/** - Shared templates between preview and live shop
- **components/shop_components.ex** - Reusable shop UI components
- **live/admin/** - Admin LiveViews (orders, pages, media, analytics, etc.)
- **live/shop/** - Shop LiveViews (home, collection, product, cart, custom pages)
- **components/shop_components/** - Reusable shop UI components (split into focused modules)
- **page_renderer.ex** - Generic block-to-component dispatch for all pages
### Three-Layer CSS Architecture
@@ -48,7 +57,18 @@ Theme switching is instant via CSS custom property injection (no reload).
| `/` | Shop home |
| `/collections/:slug` | Product collection (filtering) |
| `/products/:id` | Product detail |
| `/admin/theme` | Theme editor (auth required) |
| `/cart` | Shopping cart |
| `/contact` | Contact + order lookup |
| `/:slug` | Custom CMS pages (catch-all, must be last scope) |
| `/setup` | First-run onboarding |
| `/admin` | Admin dashboard |
| `/admin/orders` | Order management |
| `/admin/pages` | Page editor |
| `/admin/media` | Media library |
| `/admin/analytics` | Analytics dashboard |
| `/admin/activity` | Activity log |
| `/admin/theme` | Theme editor |
| `/admin/settings` | Shop settings |
## Elixir Guidelines
@@ -128,7 +148,7 @@ Template pattern:
</div>
```
Empty state with Tailwind:
Empty state with `hidden only:block`:
```heex
<div id="products" phx-update="stream">
<div class="hidden only:block">No products yet</div>
@@ -159,10 +179,11 @@ socket |> assign(form: to_form(changeset))
## JS/CSS Guidelines
- Tailwind v4 uses `@import "tailwindcss"` syntax (no tailwind.config.js)
- Project is fully Tailwind-free — hand-written CSS with `@layer`, native nesting, `oklch()`
- **Never** use `@apply` in CSS
- **Never** write inline `<script>` tags - use hooks in assets/js/
- All vendor deps must be imported into app.js/app.css
- Prefer flat selectors or max single-level nesting (esbuild passes CSS through as-is)
## LiveView Testing