diff --git a/src/fr/scanr/AndroidManifest.xml b/src/fr/scanr/AndroidManifest.xml
new file mode 100644
index 000000000..07b46f265
--- /dev/null
+++ b/src/fr/scanr/AndroidManifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fr/scanr/build.gradle b/src/fr/scanr/build.gradle
new file mode 100644
index 000000000..b93015e55
--- /dev/null
+++ b/src/fr/scanr/build.gradle
@@ -0,0 +1,8 @@
+ext {
+ extName = 'ScanR'
+ extClass = '.ScanR'
+ extVersionCode = 1
+ isNsfw = true
+}
+
+apply from: "$rootDir/common.gradle"
diff --git a/src/fr/scanr/res/mipmap-hdpi/ic_launcher.png b/src/fr/scanr/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..be7d05be0
Binary files /dev/null and b/src/fr/scanr/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/src/fr/scanr/res/mipmap-mdpi/ic_launcher.png b/src/fr/scanr/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..6bb1c30f4
Binary files /dev/null and b/src/fr/scanr/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/src/fr/scanr/res/mipmap-xhdpi/ic_launcher.png b/src/fr/scanr/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..a979fb775
Binary files /dev/null and b/src/fr/scanr/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/src/fr/scanr/res/mipmap-xxhdpi/ic_launcher.png b/src/fr/scanr/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..effbc4993
Binary files /dev/null and b/src/fr/scanr/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/src/fr/scanr/res/mipmap-xxxhdpi/ic_launcher.png b/src/fr/scanr/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..a4e37722f
Binary files /dev/null and b/src/fr/scanr/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/src/fr/scanr/src/eu/kanade/tachiyomi/extension/fr/scanr/ScanR.kt b/src/fr/scanr/src/eu/kanade/tachiyomi/extension/fr/scanr/ScanR.kt
new file mode 100644
index 000000000..6bc6d7262
--- /dev/null
+++ b/src/fr/scanr/src/eu/kanade/tachiyomi/extension/fr/scanr/ScanR.kt
@@ -0,0 +1,195 @@
+package eu.kanade.tachiyomi.extension.fr.scanr
+
+import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.asObservableSuccess
+import eu.kanade.tachiyomi.source.model.FilterList
+import eu.kanade.tachiyomi.source.model.MangasPage
+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.HttpSource
+import keiyoushi.utils.parseAs
+import okhttp3.Request
+import okhttp3.Response
+import rx.Observable
+import java.net.URI
+
+class ScanR : HttpSource() {
+
+ override val name = "ScanR"
+ override val baseUrl = "https://teamscanr.fr"
+ val cdnUrl = "https://cdn.teamscanr.fr"
+ override val lang = "fr"
+ override val supportsLatest = false
+ private val seriesDataCache = mutableMapOf()
+
+ // Popular
+ override fun popularMangaRequest(page: Int): Request {
+ return GET("$cdnUrl/index.json", headers)
+ }
+
+ override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response)
+
+ // Search
+ override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
+ val url = if (query.isNotBlank()) {
+ "$cdnUrl/index.json#$query"
+ } else {
+ "$cdnUrl/index.json"
+ }
+ return GET(url, headers)
+ }
+
+ override fun searchMangaParse(response: Response): MangasPage {
+ val series = response.parseAs