const char* src = "исходный код шейдера";
glShaderSource(имя_шейдера, 1, &src, NULL);
Вместо них нужны будут десятки тех, кто рисует схему, но кто ниразу не набирал сам код.
Остальные будут тупо применять какой-либо инструмент для реализации этой схемы.
Я не знаю что у вас за архитектура (SPA или нет), но вполне может быть что все ваши сомнения из-за того, что клиент и сервер разрабаюыватся в одном репозитории, что вовсе необязательно, и даже нежелательно. Если у вас сервер это по сути API (что вероятно, раз вы его на ноде писали), то тогда разрабатываться и деполиться они могут отдельно (так кстати будет намного лучше, т.к. это заставит вас задумываться о совместимости API и вы возможно не захотите ломать работу клиентов, которые давно не нажимали F5, например у нас это критично, люди неделями сидят не обновляя страничку).
И ещё непонятно что за build и local, это зачем в dist-е?