Skip to content

Open-source customer engagement. Automate transactional and marketing messages across email, SMS, mobile push, WhatsApp, Slack, and more πŸ“¨

License

Notifications You must be signed in to change notification settings

mo4tech/dittofeed

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

dittofeed logo


Open-source customer engagement

Dittofeed is an omni-channel customer engagement platform. Send broadcasts or create automated user journeys to message users along any channel: email, mobile push notifications, SMS, WhatsApp, Slack, and more. We're an open source, dev-friendly alternative to platforms like OneSignal, Customer.io, and Segment Engage.

πŸ”§ Development Build & Deployment (For Team Members)

This repository contains custom modifications to the Dittofeed open source codebase. The docker-compose.lite.yaml file has been configured to automatically build the Docker image from the packages/lite/Dockerfile instead of using pre-built images. If you need to run your changes locally or deploy them, follow these steps:

Quick Start for Development

# Run the application with docker-compose (automatically builds the image)
docker compose -f docker-compose.lite.yaml up -d

# Or force a rebuild if you've made changes
docker compose -f docker-compose.lite.yaml up -d --build

What's Different from Open Source

This fork includes the following custom changes:

πŸ› Keyed Performed Segment Bug Fix

  • Issue: "Keyed performed" segments in event-triggered journeys were not evaluating correctly when subsequent events (e.g., CHECK_OUT) occurred after journey entry (e.g., ADD_TO_CART)
  • Root Cause: Events with different names weren't being routed to existing keyed workflows for segment re-evaluation
  • Fix: Enhanced event routing system to signal existing keyed workflows across different event types
  • Files Modified:
    • packages/backend-lib/src/journeys.ts - Added signalExistingKeyedWorkflows() function
    • packages/backend-lib/src/journeys/userWorkflow/lifecycle.ts - Fixed workflow signaling when workflows already exist

πŸ”„ How This Fixes Our Use Case

Dittofeed Journey Builder

Before (Broken):

User: ADD_TO_CART (cartId: "123") β†’ Journey starts
Journey: Enters wait-for "checkedOut" segment
User: CHECK_OUT (cartId: "123") β†’ Event dropped (name mismatch)
Journey: Times out β†’ Sends reminder ❌

After (Fixed):

User: ADD_TO_CART (cartId: "123") β†’ Journey starts
Journey: Enters wait-for "checkedOut" segment
User: CHECK_OUT (cartId: "123") β†’ Event signaled to existing workflow βœ…
Workflow: Receives event β†’ Updates segment β†’ Journey proceeds βœ…

Development Workflow

  1. Run the application (automatically builds the image):
    docker compose -f docker-compose.lite.yaml up -d
  2. Force rebuild if you've made changes:
    docker compose -f docker-compose.lite.yaml up -d --build
  3. View logs (if needed):
    docker compose -f docker-compose.lite.yaml logs -f
  4. Stop the application:
    docker compose -f docker-compose.lite.yaml down

Syncing with Upstream

To pull in updates from the original Dittofeed repository:

# Add upstream remote (one time setup)
git remote add upstream https://github.com/dittofeed/dittofeed.git

# Fetch upstream changes
git fetch upstream

# Merge upstream changes (be careful with conflicts)
git merge upstream/main

⚠️ Important: When merging upstream changes, be careful not to overwrite our custom bug fixes!

About

Open-source customer engagement. Automate transactional and marketing messages across email, SMS, mobile push, WhatsApp, Slack, and more πŸ“¨

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 91.7%
  • MDX 6.7%
  • CSS 0.6%
  • JavaScript 0.5%
  • Dockerfile 0.3%
  • Go Template 0.1%
  • Other 0.1%