Issues

Report bugs and request features to help improve the platform.

2

GDPR / Email Compliance for Legacy User Outreach

In Progress

## Problem We plan to email up to 39K legacy users who signed up 8–14 years ago on salon.io. Under GDPR (EU users are the majority), we need a compliant basis for contacting them. ## Requirements ### Legal Basis - **Legitimate interest** (Art. 6(1)(f) GDPR) is the most viable basis — we have an existing customer relationship and are informing them about a successor service for their data/content. - Document the legitimate interest assessment (LIA) before sending. ### Email Content Requirements - Every email must include a working **unsubscribe link** (one-click, per CAN-SPAM and GDPR) - Every email must link to the **privacy policy**: https://docs.salon.io/docs/en/legal/privacy - Every email must link to the **terms of service**: https://docs.salon.io/docs/en/legal/terms - Emails must clearly identify the sender (salon.io / New Salon, Stefan) - Physical address in footer (required by CAN-SPAM, good practice for GDPR) ### Technical Requirements - Resend supports one-click unsubscribe headers (List-Unsubscribe) - CRM must track unsubscribe status — never re-email someone who unsubscribed - SPF/DKIM/DMARC must be configured on sending domain before any volume send - Bounce handling: remove hard bounces from future sends ### Tiered Send Strategy (Risk Mitigation) - **Test batch**: 10 emails to known addresses — verify deliverability - **Tier 1**: 210 VIP users — warm, engaged, low risk - **Tier 2–6**: Graduated sends per [Kickfund PRD](https://docs.salon.io/docs/en/legal/terms) - **Tier 8**: 32K bulk send — only after earlier tiers prove deliverability and low complaint rates - Monitor spam complaint rate: stay under 0.1% (Google/Yahoo requirement) ### Data Handling - Legacy user emails stored in MongoDB (CRM). Do not export to third-party tools without DPA. - Users who migrate to New Salon consent to new [Terms](https://docs.salon.io/docs/en/legal/terms) and [Privacy Policy](https://docs.salon.io/docs/en/legal/privacy) during signup/account linking. - Provide data export/deletion path for legacy users who request it (GDPR Art. 15/17) ## Acceptance Criteria - [ ] Legitimate Interest Assessment documented - [ ] Unsubscribe mechanism working in Resend - [ ] CRM tracks unsubscribe status per user - [ ] SPF/DKIM/DMARC verified on sending domain - [ ] Email templates include: unsubscribe link, privacy policy link, terms link, physical address - [ ] Bounce handling configured - [ ] Test batch sent and verified before Tier 1

#43 opened by pew12 months ago
0
1

Public User Profile Page

In Progress

Public-facing user profile page. Frontend design penned out in new-salon-app/new-salon-profile.pen.

#40 opened by SAL2 months ago
0
1

[editor] Sections as collections of any tagged asset type

In Progress

- Extend CollectionConfig with `collectionSource`: pages / images / text / video / all - Collection rendering per source type: pages as page cards, images as masonry grid, text as list, video as video grid - Extend `CollectionSettings.tsx` with source type selector - Preview count updates live - Add to collection shortcut from asset gallery (tag assignment) **Files:** `src/components/salon/editor/CollectionSettings.tsx`, `src/types/blocks.ts`, `src/hooks/use-collection.ts`

#23 opened by SAL3 months ago
0
1

[migration] Import logo, navigation style, collections, captions

In Progress

- Import site logo from legacy profile (`header_image`, `logo` field) - Translate legacy nav styles: horizontal, vertical to sidebar, center to horizontal-centered, none to horizontal - Import navigation colors and font settings - Detect legacy filtered pages and create collection-enabled sections with tag filters - Full caption import from `asset.title` and `i18n.[lang].title` (not just alt text) **Files:** `app/api/migration/import-stream/route.ts`, `src/lib/migration/legacy-service.ts`

#21 opened by SAL3 months ago
0
1

[editor] Asset tagging - tags on images, text, and video

In Progress

- Database: create `tags` + `asset_tags` join tables (normalized approach) - Add TagInput to image, text, and video edit panels - Asset gallery: tag display on thumbnails, filtering by tag, bulk tag assignment - Tag cloud of used tags - Sort by tag, date, size, name **Files:** Supabase migration, `ImageEditPanel.tsx`, `TextEditPanel.tsx`, `VideoEditPanel.tsx`, `AssetGallery.tsx`

#19 opened by SAL3 months ago
0
1

[editor] Custom theme editing - colors, fonts, per-section overrides

In Progress

- Expand SiteThemeSelector from presets-only to custom editing - Allow editing individual colors within a preset (primary, secondary, accent, background, text) - Typography presets: Google Fonts subset (20-30 curated fonts), font size scale selector - Per-section style overrides (color scheme, font override) - Live preview as colors/fonts change **Files:** `src/components/theme/SiteThemeSelector.tsx`, `src/types/site-theme.ts`

#17 opened by SAL3 months ago
0
0

[editor] Multi-language content support

In Progress

- Database: `content_translations` table + `languages`/`default_language` columns on `websites` - Editor: floating toolbar language switcher pill (only when 2+ languages enabled) - Viewer: `?lang=de` URL param, `Accept-Language` detection, `hreflang` SEO tags - Translatable content: text blocks, image captions/alt, page titles/descriptions, nav labels, site title **Files:** Supabase migration, `src/hooks/use-translations.ts`, `EditorLayout.tsx`, `TextEditPanel.tsx`, `ImageEditPanel.tsx`

#20 opened by SAL3 months ago
0