Canvas: Generate Github nodes out of the dodo-app config

Change-Id: Ifc5b09deb39352a3025f7ea66ce39b421daac94d
diff --git a/apps/canvas/back/src/index.ts b/apps/canvas/back/src/index.ts
index 0ba25b0..82e55fe 100644
--- a/apps/canvas/back/src/index.ts
+++ b/apps/canvas/back/src/index.ts
@@ -12,7 +12,16 @@
 import shell from "shelljs";
 import { RealFileSystem } from "./lib/fs.js";
 import path from "node:path";
-import { Env, generateDodoConfig, ConfigSchema, AppNode, ConfigWithInput, configToGraph, Network } from "config";
+import {
+	Env,
+	generateDodoConfig,
+	ConfigSchema,
+	AppNode,
+	ConfigWithInput,
+	configToGraph,
+	Network,
+	GithubRepository,
+} from "config";
 
 async function generateKey(root: string): Promise<[string, string]> {
 	const privKeyPath = path.join(root, "key");
@@ -325,12 +334,18 @@
 			resp.write(JSON.stringify({ error: "Invalid configuration", issues: config.error.format() }));
 			return;
 		}
+		let repos: GithubRepository[] = [];
+		if (p.githubToken) {
+			const github = new GithubClient(p.githubToken);
+			repos = await github.getRepositories();
+		}
 		const state = req.body.state
 			? JSON.stringify(req.body.state)
 			: JSON.stringify(
 					configToGraph(
 						config.data,
 						getNetworks(resp.locals.username),
+						repos,
 						p.state ? JSON.parse(Buffer.from(p.state).toString("utf8")) : null,
 					),
 				);