Skip to content

Latest commit

 

History

129 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WarmMemo

version deploy platform

繁體中文文件

WarmMemo is a Flutter Web and Firebase application that helps families and funeral-service teams prepare memorial content and manage the journey from a proposal to delivery.

Highlights

  • Create and share memorial pages, including public links and QR codes.
  • Draft, rewrite, export, and share digital obituaries.
  • Plan end-of-life finances and meaningful experiences with the Final Countdown planner.
  • Purchase service packages, follow order progress, and receive notifications.
  • Generate digital-persona skills from daily-life or workplace templates.
  • Give administrators a secure workspace for orders, suppliers, materials, delivery milestones, and funnel reporting.

Workflow

The core business workflow is:

proposal → admin review → supplier assignment → material confirmation → delivery schedule

Technology

  • Flutter Web
  • Firebase Authentication
  • Cloud Firestore
  • GitHub Actions and GitHub Pages

Architecture

flowchart TB
  user[Families and service teams]
  ci[GitHub Actions<br/>analyze, test, build]
  pages[GitHub Pages]

  ci --> pages
  user --> pages

  subgraph webapp[Flutter Web application]
    routes[AuthGate and public routes]
    features[Feature UI<br/>memorial, obituary, packages, admin, skills]
    domain[Services and repositories<br/>validation, workflow, cache]
    shared[Core utilities<br/>export, QR, UI feedback]

    routes --> features
    features --> domain
    features --> shared
  end

  pages --> routes
  domain --> auth[Firebase Authentication]
  domain --> firestore[Cloud Firestore]
  rules[Firestore security rules] -. authorize reads and writes .-> firestore

  domain --> links[Stripe Payment Links]
  domain -. optional authenticated invoice API .-> functions[Firebase Cloud Functions]
  functions --> stripe[Stripe API]
Loading

The standard GitHub Pages deployment uses Stripe Payment Links directly. Cloud Functions are optional and are not required for the free-tier checkout flow.

Getting Started

Prerequisites: a Flutter SDK compatible with Dart ^3.11.0, plus a Firebase project configured for the app.

flutter pub get
flutter run -d chrome --dart-define-from-file=env/payment.dev.json

Configuration

Configure payment, authentication, and public-link behavior with Dart defines or your deployment environment.

Variable Purpose
WARMEMO_USE_HOSTED_PAYMENT_LINKS Enable hosted payment links.
WARMEMO_PAYMENT_BACKEND_URL Payment backend base URL.
WARMEMO_PAYMENT_FUNCTION Firebase payment function name.
STRIPE_PAYMENT_LINK_120000 Stripe link for the 120,000 tier.
STRIPE_PAYMENT_LINK_150000 Stripe link for the 150,000 tier.
STRIPE_PAYMENT_LINK_220000 Stripe link for the 220,000 tier.
WARMEMO_AUTH_PERSISTENCE Authentication persistence; defaults to SESSION.
PUBLIC_BASE_URL Recommended base URL for public pages and QR codes.

Free-tier payment mode

The GitHub Pages deployment uses Stripe-hosted Payment Links and does not require Cloud Functions. Each checkout appends the Firestore order ID as Stripe's client_reference_id, allowing an administrator to match the Stripe Dashboard payment to the order before manually setting paymentStatus=paid.

LINE Pay is not shown in the application because its request-and-confirm protocol requires an executable backend. Do not expose the experimental server/ reservation endpoint as a complete payment flow without adding the confirmation call and authoritative status reconciliation.

Quality Checks

flutter analyze
flutter test
flutter test --coverage

Coverage is written to coverage/lcov.info.

Build for GitHub Pages

flutter build web --release --base-href "/warmmemo/" --dart-define-from-file=env/payment.dev.json

Security

Firestore rules protect role assignment, token balances, payment status, and order ownership. Administrative operations such as supplier management, material confirmation, and delivery scheduling are restricted to administrators. Review firestore.rules before changing data access.

Documentation

Known Constraints

  • PDF exports can fall back to a less complete Chinese font when network access is unavailable and no local subset font is included.
  • After a GitHub Pages deployment, browsers with an older cached service worker may briefly request outdated assets; use a hard refresh if needed.

About

Less paperwork, more presence—Warm Memo handles the complexities of parting so you can focus on the beauty of the memory.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages