This directory demonstrates various approaches for building applications with the Workflow Engine.
All application components are configured using workflow-native module types. This is the simplest and most consistent approach.
Examples:
simple-workflow-config.yaml- Basic HTTP server with routingapi-server-config.yaml- REST API with custom handlersevent-processor-config.yaml- Simple event processingrealtime-messaging-modular-config.yaml- Real-time messaging with EventBus bridgeapi-gateway-config.yaml- API gateway with reverse proxyapi-gateway-modular-config.yaml- API gateway with reverse proxy (alternate config)
Benefits:
- Easy YAML-based configuration with inline config blocks
- Built-in workflow routing system
- Great for rapid prototyping and production use
- Simple JSON response handlers
A few CrisisTextLine/modular framework modules are still supported but may be replaced by workflow-native equivalents in the future:
scheduler.modular- CrisisTextLine/modular scheduler for cron-based job executioncache.modular- CrisisTextLine/modular caching moduledatabase.modular- CrisisTextLine/modular database modulereverseproxy- CrisisTextLine/modular reverse proxy (not deprecated)
Examples:
scheduled-jobs-modular-config.yaml- Advanced job scheduling with cron
http.server- HTTP server that listens on a network addresshttp.router- Routes HTTP requests to handlershttp.handler- Handles HTTP requests and produces responseshttp.proxy/reverseproxy- Reverse proxyhttp.simple_proxy- Simple prefix-based reverse proxystatic.fileserver- Serves static files with optional SPA fallbackhttp.middleware.auth- Authentication middlewarehttp.middleware.logging- Request logging middlewarehttp.middleware.ratelimit- Rate limiting middlewarehttp.middleware.cors- CORS headers middlewarehttp.middleware.requestid- Request ID middlewarehttp.middleware.securityheaders- Security headers middleware
api.query- CQRS query handlerapi.command- CQRS command handlerapi.handler- REST API handlerapi.gateway- API gateway with routing, rate limiting, CORS, auth
messaging.broker- In-memory message brokermessaging.broker.eventbus- EventBus bridge for pub/submessaging.handler- Message handlersmessaging.nats- NATS brokermessaging.kafka- Kafka broker
statemachine.engine- State machine enginestate.tracker- State trackingstate.connector- State machine connector
storage.sqlite- SQLite storagestorage.local- Local filesystem storagestorage.s3- S3 storagestorage.gcs- GCS storagedatabase.workflow- SQL database for workflow statepersistence.store- Persistence store
metrics.collector- Prometheus-compatible metricshealth.checker- Health check endpointslog.collector- Log collectionobservability.otel- OpenTelemetry tracing
featureflag.service- Feature flag management with generic or LaunchDarkly providerstep.feature_flag- Pipeline step to evaluate a feature flagstep.ff_gate- Pipeline step combining flag evaluation with conditional routing
auth.jwt- JWT authenticationauth.user-store- User storedata.transformer- Data transformationwebhook.sender- Webhook sendingnotification.slack- Slack notificationsdynamic.component- Yaegi hot-reload componentsprocessing.step- Processing stepssecrets.vault- HashiCorp Vault secretssecrets.aws- AWS Secrets Manageropenapi.generator- OpenAPI spec generationopenapi.consumer- OpenAPI spec consumptionworkflow.registry- Workflow registry
The following examples demonstrate various workflow patterns:
state-machine-workflow.yaml- E-commerce order processing statesevent-driven-workflow.yaml- Complex event pattern detectionevent-processor-config.yaml- Basic event processing
integration-workflow.yaml- Third-party service integrationsms-chat-config.yaml- SMS-based messaging workflow
advanced-scheduler-workflow.yaml- Complex scheduling scenariosscheduled-jobs-config.yaml- Recurring task managementdata-pipeline-config.yaml- Data processing workflows
feature-flag-workflow.yaml- Feature flag evaluation and gating in pipelines
multi-workflow-config.yaml- Multiple parallel workflowsdependency-injection-example.yaml- Service injection patternstrigger-workflow-example.yaml- Event trigger demonstrations
Option 1: Specify configuration file
go run main.go -config <configuration-file>.yamlOption 2: Interactive selection menu
go run main.goThis displays a numbered list of available configurations.