Inspiration

Purchasing funeral and memorial goods is often an urgent and emotionally difficult task. Families may need to compare products, confirm availability, arrange delivery, and complete payment within a very short period of time. However, many existing purchasing processes still rely on phone calls, scattered product catalogs, or offline visits, which can make an already stressful situation more complicated.

We created this project to provide a more respectful, transparent, and convenient way to purchase funeral and memorial products. The goal was not to build an overly complex e-commerce platform, but to create a simple service that helps users quickly find essential items, understand their options, and complete an order with minimal effort.

What We Built

The project is a WeChat Mini Program for browsing and purchasing funeral and memorial goods. Users can:

  • Browse products by category
  • View product images, descriptions, prices, and stock status
  • Add products to a shopping cart
  • Select delivery or pickup information
  • Submit and track orders
  • Complete payment through supported official payment channels
  • Contact the service provider when additional assistance is required

The customer-facing Mini Program is supported by a separate management system. Staff members can manage products, inventory, orders, delivery status, and after-sales requests from the backend.

This separation keeps the customer interface simple while allowing store operators to maintain accurate product and order information.

How We Built It

We designed the system using a frontend-and-backend architecture.

The customer interface was developed as a WeChat Mini Program. It communicates with the backend through RESTful APIs for product queries, shopping cart operations, order creation, inventory verification, and order-status updates.

The backend is responsible for:

  • Product and category management
  • Inventory control
  • User and address information
  • Order processing
  • Payment records
  • Delivery and pickup management
  • Administrative operations

A relational database stores the main business data, including users, products, stock quantities, orders, order items, payments, and delivery records.

To prevent overselling, the available stock is calculated as:

[ A = I - R ]

where (I) is the physical inventory, (R) is the quantity reserved by unpaid or processing orders, and (A) is the quantity currently available for purchase.

For payment functionality, we use official payment service interfaces rather than implementing payment processing ourselves. WeChat Pay is integrated directly into the Mini Program, while other payment methods can be provided through compliant third-party or officially supported payment channels.

We also reused mature open-source components and existing cloud services wherever possible. This allowed us to focus on the actual purchasing workflow instead of rebuilding common infrastructure such as authentication, file storage, database access, and payment notification handling.

Challenges We Faced

One of the main challenges was designing the product experience appropriately. Funeral-related services require a different tone from ordinary shopping applications. The interface needed to remain clear and efficient without feeling overly commercial, promotional, or visually distracting.

Inventory consistency was another important challenge. A product may be viewed by several users at the same time, so the system must verify stock again when an order is submitted and reserve inventory safely during payment. We addressed this through transactional order creation, inventory locking, and automatic release of stock when an unpaid order expires.

Payment integration also required careful handling. Payment results cannot be trusted only from the client side, so the backend must verify official payment notifications, check transaction identifiers, and ensure that the same payment callback is not processed more than once.

We also needed to balance functionality with simplicity. Features such as recommendations, membership systems, complex promotions, and social sharing are common in general e-commerce applications, but they were not essential for this project. We deliberately focused on product discovery, inventory accuracy, order completion, payment, and delivery.

What We Learned

Through this project, we learned that good software design is not only about adding features. It is also about understanding which features are appropriate for a specific user group and service context.

We gained practical experience in:

  • Designing a complete Mini Program purchasing workflow
  • Separating customer-facing and administrative functions
  • Building reliable order and inventory logic
  • Integrating official payment services
  • Handling asynchronous payment notifications
  • Designing for privacy and sensitive user scenarios
  • Reusing existing technologies instead of unnecessarily rebuilding common components

Most importantly, we learned that technology can reduce practical burdens during difficult moments. A carefully designed system cannot remove the emotional difficulty of arranging funeral-related matters, but it can make the purchasing process clearer, faster, and less stressful.

Built With

Share this project:

Updates