diff --git a/.gitignore b/.gitignore
index abe6d79..c0192c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,45 +1,13 @@
-#--------------------------#
-# Magento Default Files #
-#--------------------------#
-
-/PATCH_*.sh
-
-/app/etc/local.xml
-
-/media/*
-!/media/.htaccess
-
-!/media/customer
-/media/customer/*
-!/media/customer/.htaccess
-
-!/media/dhl
-/media/dhl/*
-!/media/dhl/logo.jpg
-
-!/media/downloadable
-/media/downloadable/*
-!/media/downloadable/.htaccess
-
-!/media/xmlconnect
-/media/xmlconnect/*
-
-!/media/xmlconnect/custom
-/media/xmlconnect/custom/*
-!/media/xmlconnect/custom/ok.gif
-
-!/media/xmlconnect/original
-/media/xmlconnect/original/*
-!/media/xmlconnect/original/ok.gif
-
-!/media/xmlconnect/system
-/media/xmlconnect/system/*
-!/media/xmlconnect/system/ok.gif
-
-/var/*
-!/var/.htaccess
-
-!/var/package
-/var/package/*
-!/var/package/*.xml
-
+# Composer
+/vendor/
+.metadata
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.project
+.buildpath
+.idea/
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..9245b94
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,25 @@
+{
+ "name": "develodesign/typesense",
+ "description": "A TypeSense adapter for Magento 2",
+ "type": "magento2-module",
+ "license": "OSL-3.0",
+ "require": {
+ "algolia/algoliasearch-magento-2": "^3.9",
+ "typesense/typesense-php": "^2.0"
+ },
+ "authors": [
+ {
+ "name": "Nathan McBride",
+ "email": "nathan@brideo.co.uk"
+ },
+ {
+ "name": "Luke Collymore",
+ "email": "luke@develodesign.co.uk"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "Develo\\TypeSense": "src/"
+ }
+ }
+}
diff --git a/src/Adapter/Client.php b/src/Adapter/Client.php
new file mode 100644
index 0000000..b93791c
--- /dev/null
+++ b/src/Adapter/Client.php
@@ -0,0 +1,43 @@
+typeSenseClient = $client;
+ }
+
+ /**
+ * @inheirtDoc
+ */
+ public function deleteIndex($indexName)
+ {
+ return $this->typeSenseClient->collections[$indexName]->delete();
+ }
+}
\ No newline at end of file
diff --git a/src/Adapter/Index.php b/src/Adapter/Index.php
new file mode 100644
index 0000000..7a31e6a
--- /dev/null
+++ b/src/Adapter/Index.php
@@ -0,0 +1,74 @@
+client = $client;
+ $this->indexName = $indexName;
+ }
+
+ public function addObject($content, $objectID = null)
+ {
+ if ($objectID) {
+ $content['id'] = $content;
+ }
+
+ return $this->getDocuments()->upsert($content);
+ }
+
+ public function addObjects($objects, $objectIDKeyLegacy = 'objectID')
+ {
+ return $this->getDocuments()->import($objects, ['action' => 'create']);
+ }
+
+ public function deleteObjects($objects)
+ {
+ $ids = 'id:='.json_encode($objects);
+
+ return $this->getDocuments()->delete(['filter_by' => $ids]);
+ }
+
+ /**
+ * @return TypeSenseClient
+ */
+ private function getClient(): TypeSenseClient
+ {
+ return $this->client->typeSenseClient;
+ }
+
+ /**
+ * @todo none of the methods seem to be in this class but that is what is documented.
+ *
+ * @return \Devloops\Typesence\Documents
+ */
+ private function getDocuments()
+ {
+ return $this->getClient()->collections[$this->indexName]->documents;
+ }
+}
\ No newline at end of file
diff --git a/src/etc/di.xml b/src/etc/di.xml
new file mode 100644
index 0000000..c3956c2
--- /dev/null
+++ b/src/etc/di.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/src/etc/module.xml b/src/etc/module.xml
new file mode 100644
index 0000000..f24a51a
--- /dev/null
+++ b/src/etc/module.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/registration.php b/src/registration.php
new file mode 100644
index 0000000..6b69411
--- /dev/null
+++ b/src/registration.php
@@ -0,0 +1,5 @@
+