Hey Maxim,
As per my understanding, it seems that we can take following route if we want to go through node js solution instead of custom solution:-
We should build an api in node js which will receive project json(tasks, dependencies, resources, assignments, startdate) as parameter and the milestones array for which start, end date and duration fields have been changed. Based on the code which you shared, we will alter the date fields for milestones using following code.
myNodeProject.taskStore.getById(1).startDate = 10;
For example if we have 10 milestones for which dates have been changed and if we apply same code logic on the impacted milestones and execute following code as it should give me updated project schedule which i can send back to salesforce to update the project milestone schedule.
await myNodeProject.commitAsync();
const changes = myNodeProject.changes;
Design::
Salesforce(if any milestone date is changed from cron job) => call node api with full project json and updated milestones data => api will process the changes into bryntum project using your npm package library => return results back to salesforce with posted changes => apply changes to salesforce metadata
Kindly share your thoughts on it.