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.
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:
# 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 --buildThis fork includes the following custom changes:
- 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- AddedsignalExistingKeyedWorkflows()functionpackages/backend-lib/src/journeys/userWorkflow/lifecycle.ts- Fixed workflow signaling when workflows already exist
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 β
- Run the application (automatically builds the image):
docker compose -f docker-compose.lite.yaml up -d
- Force rebuild if you've made changes:
docker compose -f docker-compose.lite.yaml up -d --build
- View logs (if needed):
docker compose -f docker-compose.lite.yaml logs -f
- Stop the application:
docker compose -f docker-compose.lite.yaml down
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
