diff --git a/src/main.py b/src/main.py
index a3ea3c6..334ba34 100644
--- a/src/main.py
+++ b/src/main.py
@@ -1 +1,51 @@
-print("Hello")
\ No newline at end of file
+from aiohttp import web
+import os
+import hmac
+import pack
+
+class App:
+    def __init__(self):
+        self.pack = pack.Pack()
+        self.app = web.Application()
+        self.app.add_routes([web.post('/update', self.updatePack)])
+        self.app.router.add_static('/files', "./files")
+        web.run_app(self.app)
+
+
+    async def updatePack(self, request):
+        json = await request.json()
+        text = await request.read()
+        header_signature = request.headers.get('X-Hub-Signature')
+        if (status := self.verify_signature(text, header_signature)) == 200: 
+            self.pack.pull()
+            self.pack.collate()
+            self.pack.compress()
+            self.pack.hash()
+        print(status)
+        return web.Response(status=status)
+
+    def verify_signature(self, request_data, header_signature):
+        # do not store your secret key in your code, pull from environment variable
+        secret_key = os.environ.get('GITHUB_WEBHOOK_SECRET')
+
+        if not header_signature:
+            return 404
+
+        # separate the signature from the sha1 indication
+        sha_name, signature = header_signature.split('=')
+        if sha_name != 'sha1':
+            return 501
+
+        # create a new hmac with the secret key and the request data
+        mac = hmac.new(secret_key.encode(), msg=request_data, digestmod='sha1')
+
+        # verify the digest matches the signature
+        if not hmac.compare_digest(mac.hexdigest(), signature):
+            return 404
+        return 200
+
+
+
+if __name__ == '__main__':
+        app = App()
+