diff --git a/apps/canvas/back/src/github.ts b/apps/canvas/back/src/github.ts
index 7657043..df8eacf 100644
--- a/apps/canvas/back/src/github.ts
+++ b/apps/canvas/back/src/github.ts
@@ -1,34 +1,11 @@
 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(),
-});
-
-const DeployKeysSchema = z.array(
-	z.object({
-		id: z.number(),
-		key: z.string(),
-	}),
-);
-
-const WebhookSchema = z.object({
-	id: z.number(),
-	config: z.object({
-		url: z.string().optional(), // url might not always be present
-		content_type: z.string().optional(),
-	}),
-	events: z.array(z.string()),
-	active: z.boolean(),
-});
-
-const ListWebhooksResponseSchema = z.array(WebhookSchema);
-
-export type GithubRepository = z.infer<typeof GithubRepositorySchema>;
+import {
+	GithubRepository,
+	GithubRepositoriesSchema,
+	DeployKeysSchema,
+	ListWebhooksResponseSchema,
+	DeployKeys,
+} from "config";
 
 export class GithubClient {
 	private token: string;
@@ -49,13 +26,13 @@
 		const response = await axios.get("https://api.github.com/user/repos", {
 			headers: this.getHeaders(),
 		});
-		return z.array(GithubRepositorySchema).parse(response.data);
+		return GithubRepositoriesSchema.parse(response.data);
 	}
 
 	async addDeployKey(repoPath: string, key: string) {
 		const sshUrl = repoPath;
 		const repoOwnerAndName = sshUrl.replace("git@github.com:", "").replace(".git", "");
-		let existingKeys: z.infer<typeof DeployKeysSchema> = [];
+		let existingKeys: DeployKeys = [];
 		const response = await axios.get(`https://api.github.com/repos/${repoOwnerAndName}/keys`, {
 			headers: this.getHeaders(),
 		});
