Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlowerMoji

FlowerMoji is a static PWA for sending a digital flower card with a short message. It is designed around low-pressure gifting: recipients do not need to install an app, log in, or send a reply. The current production build integrates with LINE LIFF and can send a flower card as a LINE Flex Message when the channel is configured.

日本語: FlowerMoji は「花で気持ちを、そっと届ける」ためのデジタル贈花 PWAです。LINE連携ではFlex Messageカードとして花を送り、受け取り側は アプリ不要でブラウザだけで写真とメッセージを受け取れます。

Current Status

  • Repository visibility: currently private, intended for public OSS release.
  • Production URL: https://flowermoji.netlify.app/
  • LINE integration: LIFF based sharing with Web Share and LINE share URL fallback.
  • Gift storage: Netlify Function and Netlify Blobs support short gift URLs.
  • Analytics: optional Google Analytics configuration is generated into analytics-env.js; it is disabled when no measurement ID is configured.
  • Package distribution: no npm/PyPI/crates package is published.
  • License: MIT.

Features

  • Static web app that can be deployed from the repository root.
  • PWA manifest and service worker.
  • LINE Flex Message sharing through shareTargetPicker when LIFF is available.
  • Browser fallback for environments without LIFF.
  • Short gift URLs through /.netlify/functions/gifts.
  • Privacy pages for production and LINE MINI App review.
  • No read receipts, open notifications, reply reminders, or recipient tracking.

Repository Layout

flowermoji-prod/
├── index.html
├── flowermoji-config.js
├── analytics-env.js
├── manifest.json
├── sw.js
├── netlify.toml
├── netlify/functions/gifts.js
├── privacy.html
├── terms.html
├── support.html
├── LINE_IMPLEMENTATION.md
├── LINE_MINI_APP_STEPS.md
├── LINE_RELEASE_PACKAGE.md
└── README.md

Local Development

Install dependencies:

npm ci

Run the build step:

npm run build

Serve the static app:

npx serve .

Open the local URL printed by serve. PWA and service worker behavior should be checked over HTTP/HTTPS, not with file://.

Configuration

Create a LINE LIFF app in LINE Developers and set the values in flowermoji-config.js.

window.FLOWERMOJI_CONFIG = {
  liffId: "2010080150-Tbv0aD5W",
  canonicalUrl: "https://flowermoji.netlify.app/",
  enablePremiumCheckout: false,
  enableAnalyticsInLocal: false,
  gaMeasurementId: ""
};

canonicalUrl is used as the base URL for gift links sent through LINE. Use the public HTTPS app URL, not a liff.line.me URL. Enable shareTargetPicker in the LINE channel for LINE sending.

See LINE_IMPLEMENTATION.md and LINE_MINI_APP_STEPS.md for setup details.

Deployment

The current production site is deployed to:

https://flowermoji.netlify.app/

Netlify settings:

  • Build command: npm run build
  • Publish directory: repository root
  • Function directory: netlify/functions

Netlify CLI example:

netlify deploy --prod --dir=.

Quality Checks

Run these before submitting changes:

npm ci
npm run build
npm audit
node -e "require('./netlify/functions/gifts.js'); console.log('gifts function loads')"

Manual checks:

  • Open the production or local app in a browser.
  • Select a flower and create a gift.
  • Confirm the received gift page shows the flower, addressee, message, and flower language.
  • Confirm LINE sharing still opens the friend picker when tested inside LINE.

The latest production QA notes are in QA_STATUS.md.

Security and Privacy Notes

  • Do not commit API keys, LINE channel secrets, access tokens, cookies, or private account data.
  • LIFF IDs and public Netlify URLs are not secrets, but maintainers should verify that they are safe to publish before making the repository public.
  • Gift text is length limited and sanitized in netlify/functions/gifts.js.
  • Gift records expire after 90 days in the current function implementation.

Security reporting guidance is in SECURITY.md.

Contributing

Contribution guidance is in CONTRIBUTING.md. This repository is small, so changes should stay focused and avoid unrelated refactors.

Changelog

See CHANGELOG.md.

License

FlowerMoji is released under the MIT License.

About

Static PWA for sending low-pressure digital flower cards through LINE or a browser

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages