diff --git a/src/es/kingsofdarkness/AndroidManifest.xml b/src/es/kingsofdarkness/AndroidManifest.xml
new file mode 100644
index 000000000..30deb7f79
--- /dev/null
+++ b/src/es/kingsofdarkness/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="eu.kanade.tachiyomi.extension" />
diff --git a/src/es/kingsofdarkness/build.gradle b/src/es/kingsofdarkness/build.gradle
new file mode 100644
index 000000000..21b194c9a
--- /dev/null
+++ b/src/es/kingsofdarkness/build.gradle
@@ -0,0 +1,12 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+
+ext {
+    extName = 'Kings Of Darkness'
+    pkgNameSuffix = 'es.kingsofdarkness'
+    extClass = '.KingsOfDarkness'
+    extVersionCode = 1
+    libVersion = '1.2'
+}
+
+apply from: "$rootDir/common.gradle"
diff --git a/src/es/kingsofdarkness/res/mipmap-hdpi/ic_launcher.png b/src/es/kingsofdarkness/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..25c6c6e74
Binary files /dev/null and b/src/es/kingsofdarkness/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/src/es/kingsofdarkness/res/mipmap-mdpi/ic_launcher.png b/src/es/kingsofdarkness/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..1ad8e97f0
Binary files /dev/null and b/src/es/kingsofdarkness/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/src/es/kingsofdarkness/res/mipmap-xhdpi/ic_launcher.png b/src/es/kingsofdarkness/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..afb615a51
Binary files /dev/null and b/src/es/kingsofdarkness/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/src/es/kingsofdarkness/res/mipmap-xxhdpi/ic_launcher.png b/src/es/kingsofdarkness/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..7540c66fc
Binary files /dev/null and b/src/es/kingsofdarkness/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/src/es/kingsofdarkness/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/kingsofdarkness/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..02d65b700
Binary files /dev/null and b/src/es/kingsofdarkness/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/src/es/kingsofdarkness/res/web_hi_res_512.png b/src/es/kingsofdarkness/res/web_hi_res_512.png
new file mode 100644
index 000000000..f935bb886
Binary files /dev/null and b/src/es/kingsofdarkness/res/web_hi_res_512.png differ
diff --git a/src/es/kingsofdarkness/src/eu/kanade/tachiyomi/extension/es/kingsofdarkness/KingsOfDarkness.kt b/src/es/kingsofdarkness/src/eu/kanade/tachiyomi/extension/es/kingsofdarkness/KingsOfDarkness.kt
new file mode 100644
index 000000000..cc634357c
--- /dev/null
+++ b/src/es/kingsofdarkness/src/eu/kanade/tachiyomi/extension/es/kingsofdarkness/KingsOfDarkness.kt
@@ -0,0 +1,99 @@
+package eu.kanade.tachiyomi.extension.es.kingsofdarkness
+
+import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.source.model.FilterList
+import eu.kanade.tachiyomi.source.model.Page
+import eu.kanade.tachiyomi.source.model.SChapter
+import eu.kanade.tachiyomi.source.model.SManga
+import eu.kanade.tachiyomi.source.online.ParsedHttpSource
+import org.jsoup.nodes.Document
+import org.jsoup.nodes.Element
+
+class KingsOfDarkness : ParsedHttpSource() {
+    override val name = "Kings Of Darkness"
+
+    override val baseUrl = "https://kings-of-darkness.wixsite.com/0000"
+
+    override val lang = "es"
+
+    override val supportsLatest = false
+
+    override fun popularMangaSelector() = "#SITE_PAGES div[title]"
+
+    override fun popularMangaRequest(page: Int) =
+        GET("$baseUrl/proyectos", headers)
+
+    override fun popularMangaFromElement(element: Element) =
+        SManga.create().apply {
+            url = element.child(0).attr("href")
+            title = element.nextElementSibling().text()
+            thumbnail_url = element.selectFirst("img").image
+        }
+
+    override fun fetchSearchManga(page: Int, query: String, filters: FilterList) =
+        fetchPopularManga(page).map { mp ->
+            mp.copy(mp.mangas.filter { it.title.contains(query, true) })
+        }!!
+
+    override fun mangaDetailsRequest(manga: SManga) =
+        GET(manga.url, headers)
+
+    override fun mangaDetailsParse(document: Document) =
+        SManga.create().apply {
+            url = document.location()
+            title = document.selectFirst("#SITE_PAGES h2").text()
+            thumbnail_url = document.selectFirst("#SITE_PAGES img").image
+            document.select("#SITE_PAGES p:last-of-type").let { el ->
+                description = el[0].text().trim()
+                genre = el[1].select("a").joinToString { it.text() }
+            }
+        }
+
+    override fun chapterListSelector() = "#SITE_PAGES a[target=_self]"
+
+    override fun chapterListRequest(manga: SManga) =
+        GET(manga.url, headers)
+
+    override fun chapterFromElement(element: Element) =
+        SChapter.create().apply {
+            url = element.attr("href")
+            name = element.child(0).text()
+            chapter_number = name.substring(3).toFloat()
+        }
+
+    override fun pageListRequest(chapter: SChapter) =
+        GET(chapter.url, headers)
+
+    override fun pageListParse(document: Document) =
+        document.select("#SITE_PAGES img").mapIndexed { idx, el ->
+            Page(idx, "", el.image)
+        }
+
+    private inline val Element.image: String
+        get() = attr("src").substringBefore("/v1/fill")
+
+    override fun latestUpdatesSelector() = ""
+
+    override fun latestUpdatesNextPageSelector(): String? = null
+
+    override fun latestUpdatesRequest(page: Int) =
+        throw UnsupportedOperationException("Not used!")
+
+    override fun latestUpdatesFromElement(element: Element) =
+        throw UnsupportedOperationException("Not used!")
+
+    override fun popularMangaNextPageSelector(): String? = null
+
+    override fun searchMangaSelector() = ""
+
+    override fun searchMangaNextPageSelector(): String? = null
+
+    override fun searchMangaRequest(page: Int, query: String, filters: FilterList) =
+        throw UnsupportedOperationException("Not used!")
+
+    override fun searchMangaFromElement(element: Element) =
+        throw UnsupportedOperationException("Not used!")
+
+    override fun imageUrlParse(document: Document) =
+        throw UnsupportedOperationException("Not used!")
+}