I decided to create a simple App to demonstrate how to achieve Gantt chart-lite functionality.
The App has one Type (Task) and each Task can have zero, one or more predecessor Tasks (and zero, one or more successor Tasks). When the dates are changed for a Task, any successor tasks are automatcially shuffled to start at the latest finish time of all their predecessors, whilst maintaining duration.
Hope that makes sense, and it might help someone.
You’ll need to makes sure that you don’t create any circular dependencies, or the snake will forever be chasing its tail