diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7cfa2c9e..3a9c0c88 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,12 +1,20 @@
+
+
-
+ android:theme="@style/AppTheme">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/jellyfin/android/WebappActivity.kt b/app/src/main/java/org/jellyfin/android/WebappActivity.kt
new file mode 100644
index 00000000..91550f60
--- /dev/null
+++ b/app/src/main/java/org/jellyfin/android/WebappActivity.kt
@@ -0,0 +1,41 @@
+package org.jellyfin.android
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.webkit.WebChromeClient
+import android.webkit.WebView
+import androidx.appcompat.app.AppCompatActivity
+import org.jellyfin.android.utils.lazyView
+
+class WebappActivity : AppCompatActivity() {
+
+ private val webView: WebView by lazyView(R.id.web_view)
+
+ @SuppressLint("SetJavaScriptEnabled")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_webapp)
+
+ webView.webChromeClient = WebChromeClient()
+ webView.settings.apply {
+ javaScriptEnabled = true
+ domStorageEnabled = true
+ allowUniversalAccessFromFileURLs = true
+ }
+
+ webView.loadUrl("file:///android_asset/www/index.html")
+ }
+
+ override fun onBackPressed() {
+ val history = webView.copyBackForwardList()
+ if (webView.canGoBack() && history.currentIndex > 1) {
+ webView.goBack()
+ } else super.onBackPressed()
+ }
+
+ companion object {
+ init {
+ if (BuildConfig.DEBUG) WebView.setWebContentsDebuggingEnabled(true)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/jellyfin/android/utils/ViewUtils.kt b/app/src/main/java/org/jellyfin/android/utils/ViewUtils.kt
new file mode 100644
index 00000000..560080ae
--- /dev/null
+++ b/app/src/main/java/org/jellyfin/android/utils/ViewUtils.kt
@@ -0,0 +1,10 @@
+@file:Suppress("NOTHING_TO_INLINE")
+
+package org.jellyfin.android.utils
+
+import android.app.Activity
+import android.webkit.WebView
+import androidx.annotation.IdRes
+
+inline fun Activity.lazyView(@IdRes id: Int) =
+ lazy(LazyThreadSafetyMode.NONE) { findViewById(id) }
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_webapp.xml b/app/src/main/res/layout/activity_webapp.xml
new file mode 100644
index 00000000..04bd2d8f
--- /dev/null
+++ b/app/src/main/res/layout/activity_webapp.xml
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 4faecfa8..5d30bfa3 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,6 +1,6 @@
- #6200EE
- #3700B3
- #03DAC5
+ #202020
+ #1a1a1a
+ #00a4dc
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index fac92916..72786088 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,10 +1,8 @@
-
-
-
\ No newline at end of file