diff --git a/apps/canvas/back/src/github.ts b/apps/canvas/back/src/github.ts
new file mode 100644
index 0000000..850185d
--- /dev/null
+++ b/apps/canvas/back/src/github.ts
@@ -0,0 +1,51 @@
+import axios from "axios";
+import { z } from "zod";
+
+export const GithubRepositorySchema = z.object({
+	id: z.number(),
+	name: z.string(),
+	full_name: z.string(),
+	html_url: z.string(),
+	ssh_url: z.string(),
+});
+
+export type GithubRepository = z.infer<typeof GithubRepositorySchema>;
+
+export class GithubClient {
+	private token: string;
+
+	constructor(token: string) {
+		this.token = token;
+	}
+
+	private getHeaders() {
+		return {
+			Authorization: `Bearer ${this.token}`,
+			Accept: "application/vnd.github.v3+json",
+		};
+	}
+
+	async getRepositories(): Promise<GithubRepository[]> {
+		const response = await axios.get("https://api.github.com/user/repos", {
+			headers: this.getHeaders(),
+		});
+		return z.array(GithubRepositorySchema).parse(response.data);
+	}
+
+	async addDeployKey(repoPath: string, key: string) {
+		const sshUrl = repoPath;
+		const repoOwnerAndName = sshUrl.replace("git@github.com:", "").replace(".git", "");
+
+		await axios.post(
+			`https://api.github.com/repos/${repoOwnerAndName}/keys`,
+			{
+				title: "dodo",
+				key: key,
+				read_only: true,
+			},
+			{
+				headers: this.getHeaders(),
+			},
+		);
+	}
+}
