WarmMemo is a Flutter Web + Firebase app for memorial drafting, obituary generation, package checkout, and admin-side order operations.
Target: v0.2.0 (release candidate)
- App version (current):
0.1.0+1(update to0.2.0+0when cutting release) flutter analyze: passflutter test: pass (78tests)flutter test --coverage: pass- Latest line coverage:
81.22% (1527/1880)fromcoverage/lcov.info(updated: 2026-04-05)
- Supplier management (admin): supplier master profile + active/inactive toggle
- Material menu (v1 tiers): Basic / Standard / Premium with admin-side business fields
- Delivery schedule milestones:
設計確認/製作中/已交付 - Conversion funnel visibility:
- Proposal rate
- Approval rate
- Assignment completion rate
- Delivery completion rate
- Weekly funnel trend panel (last 8 weeks) in Admin dashboard
- Final countdown planning upgraded:
- health self-assessment (5 dimensions, current vs target)
- three-axis comparison (health / wealth / lifetime)
- memory experience progress with category distribution
- Repository + request policy + cache/in-flight de-dup baseline
- Optimistic updates for key user/admin actions
- Guardrails and error-state handling for key forms
- Input normalization/sanitization for text/date/number fields
- Field-level validation analytics (best-effort tracking)
- Email/password login with role-based access (
user/admin) - First-time onboarding (3 steps): select service, generate first draft, confirm token balance
- Copy-friendly UI:
- major generated content supports text selection + copy
- final countdown page supports direct selection/copy
- Memorial page:
- public link + QR code generation/download
- proposal submission for tombstone/columbarium purchase workflow
- Digital obituary:
- content generation/rewrite
- share link + QR + export options
- Final countdown planner:
- asset/cost planning with zero-balance guidance
- target controls (target lifetime / target end-balance)
- memory experience checklist with categories:
家庭 / 旅行 / 學習 / 貢獻 - Die with Zero readiness score (composite index)
- Package checkout and order status tracking
- Notification center (unread filter + mark read)
- Digital clone skill generator:
- WarmMemo (daily) / Colleague (work) dual templates
- validated JSON input and one-click JSON file import (web)
- Admin-only dashboard
- Multi-filter order management (status/plan/payment/verifier/date/keyword)
- Batch operations with confirmation and result report
- Manual order processing with audit logs
- Vendor assignment, material confirmation, delivery milestone updates
- Funnel metrics + weekly trend visibility
- New signup users receive 5 free tokens
- Advanced actions consume tokens (1 token per action):
- memorial preview / PDF / image export
- obituary generation / rewrite / PDF / image export
- Insufficient balance flow:
- immediate message + top-up request dialog
Key references:
lib/data/services/token_wallet_service.dartlib/data/services/user_profile_service.dartlib/features/memorial/memorial_page_tab.dartlib/features/obituary/digital_obituary_tab.dart
Firestore security is hardened for client-only operation:
- Users cannot elevate roles or self-increase token balance
- Owner-only editable keys are restricted on orders
- Users cannot set
paymentStatus = paid - Proposal shape is validated in rules
- Vendor management and broad order operations are admin-only
Rules file:
firestore.rules
WARMEMO_USE_HOSTED_PAYMENT_LINKSWARMEMO_PAYMENT_BACKEND_URLWARMEMO_PAYMENT_FUNCTIONSTRIPE_PAYMENT_LINK_120000STRIPE_PAYMENT_LINK_150000STRIPE_PAYMENT_LINK_220000WARMEMO_AUTH_PERSISTENCE(SESSIONby default)
PUBLIC_BASE_URL(recommended for QR/public page consistency across envs)
flutter pub get
flutter run -d chrome --dart-define-from-file=env/payment.dev.jsonflutter build web --release --base-href "/warmmemo/" --dart-define-from-file=env/payment.dev.jsonflutter analyze
flutter test
flutter test --coverageCoverage output:
coverage/lcov.info
- Update
pubspec.yamlversion to0.2.0+0 - Re-run:
flutter analyzeflutter testflutter test --coverage
- Confirm Firestore rules deployed:
firestore.rules
- Verify key flows in smoke run:
- memorial public link + QR
- obituary generation/share path
- proposal -> admin assign -> material -> schedule
- top-up request and admin processing
- Confirm environment variables for production (especially
PUBLIC_BASE_URL)
- Customer Support SOP:
docs/sop/phase1_customer_support_sop.md - Admin Operations SOP:
docs/sop/phase1_admin_operations_sop.md
- Coverage badge is manually synced from local run output.
- Weekly funnel is derived from available order timestamps and verification logs (best-effort inference).
- Validation analytics is best-effort and never blocks user flow.