├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── android ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── capacitor.build.gradle │ ├── proguard-rules.pro │ ├── release │ │ ├── checksum.txt │ │ └── output-metadata.json │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── getcapacitor │ │ │ └── myapp │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── geddit │ │ │ │ └── buzl │ │ │ │ └── uk │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-land-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-land-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-night-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-night │ │ │ └── splash.png │ │ │ ├── drawable-port-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-port-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-night-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ ├── ic_launcher_background.xml │ │ │ ├── logo.png │ │ │ └── splash.png │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-ldpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ ├── ic_launcher_background.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── file_paths.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── getcapacitor │ │ └── myapp │ │ └── ExampleUnitTest.java ├── build.gradle ├── capacitor-cordova-android-plugins │ └── cordova.variables.gradle ├── capacitor.settings.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── variables.gradle ├── capacitor.config.json ├── deploy.sh ├── docs ├── README.md ├── geddit.js ├── geddit.min.js └── version.json ├── fastlane └── metadata │ └── android │ └── en-US │ ├── changelogs │ └── 3.txt │ ├── full_description.txt │ ├── images │ ├── featureGraphic.jpg │ ├── icon.png │ └── phoneScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ └── 4.png │ ├── short_description.txt │ └── title.txt ├── icons ├── icon-128.webp ├── icon-192.webp ├── icon-256.webp ├── icon-48.webp ├── icon-512.webp ├── icon-72.webp └── icon-96.webp ├── images ├── screenshot_1.png ├── screenshot_2.png ├── screenshot_3.png └── screenshot_4.png ├── package-lock.json ├── package.json ├── resources └── logo.png ├── src ├── assets │ ├── md3.css │ ├── nord.css │ └── styles.css ├── components │ ├── App.vue │ ├── CompactComment.vue │ ├── CompactPost.vue │ ├── CompactSubreddit.vue │ ├── CompactUser.vue │ ├── FullPost.vue │ ├── Gallery.vue │ ├── GalleryViewer.vue │ ├── Home.vue │ ├── ImageViewer.vue │ ├── NavigationBar.vue │ ├── Options.vue │ ├── Post.vue │ ├── Preview.vue │ ├── Search.vue │ ├── Settings.vue │ ├── Subreddit.vue │ ├── Subreddits.vue │ ├── TopAppBar.vue │ ├── TopAppBarSubreddit.vue │ ├── UpdateManager.vue │ ├── User.vue │ ├── UserComments.vue │ ├── UserOverview.vue │ └── UserPosts.vue ├── contents │ ├── CompactEmbed.vue │ ├── CompactFallback.vue │ ├── CompactGallery.vue │ ├── CompactImage.vue │ ├── CompactLink.vue │ ├── CompactText.vue │ ├── CompactVideo.vue │ ├── FullGallery.vue │ ├── FullImage.vue │ ├── FullText.vue │ ├── FullVideo.vue │ └── Placeholder.vue ├── index.html ├── js │ ├── event.js │ ├── geddit.js │ ├── main.js │ └── store.js ├── manifest.webmanifest ├── public │ └── images │ │ ├── all.svg │ │ ├── favicon.png │ │ ├── link.svg │ │ ├── logo.png │ │ ├── logo_background.jpg │ │ ├── logo_compressed.png │ │ ├── popular.svg │ │ ├── premium.svg │ │ ├── subreddit.svg │ │ ├── subreddit_b.svg │ │ ├── subreddit_w.svg │ │ ├── text.svg │ │ └── user.svg ├── router │ └── index.js └── scss │ └── styles.scss ├── vite.config.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | Geddit Logo 4 | 5 |

Geddit

6 | 7 | Get it on F-Droid 10 | 11 |

12 | An open-source, Reddit client for Android without using the public JSON feed 13 |
14 |

15 | GitHub Repo stars 16 | GitHub commit activity 17 | GitHub issues 18 | License 19 |
20 | Report Bug 21 | · 22 | Request Feature 23 |

24 |
25 | 26 | ## Installation 27 | Download the APK from [GitHub Releases](https://github.com/kaangiray26/geddit-app/releases) and install it. 28 | 29 | ## Screenshots 30 |
31 | 32 | 33 | 34 | 35 |
36 | 37 | ## How to make Geddit the default app for Reddit links? 38 | * [Check out this brief guide](https://github.com/kaangiray26/geddit-app/wiki/Enabling-App-Links) on how to enable app links for Geddit v1.3+ 39 | 40 | ## Are you a developer? 41 | You can use the heart of this project, the [Geddit Library](https://github.com/kaangiray26/geddit-app/blob/main/src/js/geddit.js), to build your own read-only Reddit applications. Well, at least until Reddit decides to terminate their RSS/JSON feeds. 42 | 43 | Also, there is a minifed version available: 44 | * [geddit.min.js](https://kaangiray26.github.io/geddit-app/geddit.min.js) (9.0kB) 45 | 46 | ## Disclaimer 47 | This project is an **open-source** software with the [GNU General Public License v3.0](https://github.com/kaangiray26/geddit-app/blob/main/LICENSE). The projects is nothing more than a simple example of how to use Reddit's RSS/JSON feeds to build a read-only Reddit client, and it is not intended to be used as a Reddit client. Instead, use the official Reddit app or any other Reddit client that uses Reddit's API for full functionality. **No data is collected** from the users and **no profit is made** from the app. Developers are not responsible for any damage caused by the app. **Use at your own risk.** 48 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | # Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore 2 | 3 | # Built application files 4 | *.apk 5 | *.aar 6 | *.ap_ 7 | *.aab 8 | 9 | # Files for the ART/Dalvik VM 10 | *.dex 11 | 12 | # Java class files 13 | *.class 14 | 15 | # Generated files 16 | bin/ 17 | gen/ 18 | out/ 19 | # Uncomment the following line in case you need and you don't have the release build type files in your app 20 | # release/ 21 | 22 | # Gradle files 23 | .gradle/ 24 | build/ 25 | 26 | # Local configuration file (sdk path, etc) 27 | local.properties 28 | 29 | # Proguard folder generated by Eclipse 30 | proguard/ 31 | 32 | # Log Files 33 | *.log 34 | 35 | # Android Studio Navigation editor temp files 36 | .navigation/ 37 | 38 | # Android Studio captures folder 39 | captures/ 40 | 41 | # IntelliJ 42 | *.iml 43 | .idea/workspace.xml 44 | .idea/tasks.xml 45 | .idea/gradle.xml 46 | .idea/assetWizardSettings.xml 47 | .idea/dictionaries 48 | .idea/libraries 49 | # Android Studio 3 in .gitignore file. 50 | .idea/caches 51 | .idea/modules.xml 52 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 53 | .idea/navEditor.xml 54 | 55 | # Keystore files 56 | # Uncomment the following lines if you do not want to check your keystore files in. 57 | #*.jks 58 | #*.keystore 59 | 60 | # External native build folder generated in Android Studio 2.2 and later 61 | .externalNativeBuild 62 | .cxx/ 63 | 64 | # Google Services (e.g. APIs or Firebase) 65 | # google-services.json 66 | 67 | # Freeline 68 | freeline.py 69 | freeline/ 70 | freeline_project_description.json 71 | 72 | # fastlane 73 | fastlane/report.xml 74 | fastlane/Preview.html 75 | fastlane/screenshots 76 | fastlane/test_output 77 | fastlane/readme.md 78 | 79 | # Version control 80 | vcs.xml 81 | 82 | # lint 83 | lint/intermediates/ 84 | lint/generated/ 85 | lint/outputs/ 86 | lint/tmp/ 87 | # lint/reports/ 88 | 89 | # Android Profiling 90 | *.hprof 91 | 92 | # Cordova plugins for Capacitor 93 | capacitor-cordova-android-plugins/ 94 | 95 | # Copied web assets 96 | app/src/main/assets/public 97 | 98 | # Generated Config files 99 | app/src/main/assets/capacitor.config.json 100 | app/src/main/assets/capacitor.plugins.json 101 | app/src/main/res/xml/config.xml 102 | -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build/* 2 | !/build/.npmkeep 3 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | namespace "geddit.buzl.uk" 5 | compileSdkVersion rootProject.ext.compileSdkVersion 6 | defaultConfig { 7 | applicationId "geddit.buzl.uk" 8 | minSdkVersion rootProject.ext.minSdkVersion 9 | targetSdkVersion rootProject.ext.targetSdkVersion 10 | versionCode 7 11 | versionName "1.7" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | aaptOptions { 14 | // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. 15 | // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 16 | ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' 17 | } 18 | } 19 | buildTypes { 20 | release { 21 | minifyEnabled false 22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 23 | } 24 | } 25 | } 26 | 27 | repositories { 28 | flatDir{ 29 | dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' 30 | } 31 | } 32 | 33 | dependencies { 34 | implementation fileTree(include: ['*.jar'], dir: 'libs') 35 | implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" 36 | implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" 37 | implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" 38 | implementation project(':capacitor-android') 39 | testImplementation "junit:junit:$junitVersion" 40 | androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" 41 | androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" 42 | implementation project(':capacitor-cordova-android-plugins') 43 | } 44 | 45 | apply from: 'capacitor.build.gradle' 46 | 47 | try { 48 | def servicesJSON = file('google-services.json') 49 | if (servicesJSON.text) { 50 | apply plugin: 'com.google.gms.google-services' 51 | } 52 | } catch(Exception e) { 53 | logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") 54 | } 55 | -------------------------------------------------------------------------------- /android/app/capacitor.build.gradle: -------------------------------------------------------------------------------- 1 | // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 | 3 | android { 4 | compileOptions { 5 | sourceCompatibility JavaVersion.VERSION_17 6 | targetCompatibility JavaVersion.VERSION_17 7 | } 8 | } 9 | 10 | apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" 11 | dependencies { 12 | implementation project(':capacitor-app') 13 | implementation project(':capacitor-app-launcher') 14 | implementation project(':capacitor-browser') 15 | implementation project(':capacitor-filesystem') 16 | implementation project(':capacitor-haptics') 17 | implementation project(':capacitor-local-notifications') 18 | implementation project(':capacitor-share') 19 | implementation project(':capacitor-toast') 20 | 21 | } 22 | 23 | 24 | if (hasProperty('postBuildExtras')) { 25 | postBuildExtras() 26 | } 27 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/app/release/checksum.txt: -------------------------------------------------------------------------------- 1 | fc5de5320d354a693e443ea609efe3bc63e7cc238147e8127a6989fe108894c4 Geddit_v1.7.apk 2 | -------------------------------------------------------------------------------- /android/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "geddit.buzl.uk", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 7, 15 | "versionName": "1.7", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File" 20 | } -------------------------------------------------------------------------------- /android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.getcapacitor.myapp; 2 | 3 | import static org.junit.Assert.*; 4 | 5 | import android.content.Context; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | import androidx.test.platform.app.InstrumentationRegistry; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * @see Testing documentation 15 | */ 16 | @RunWith(AndroidJUnit4.class) 17 | public class ExampleInstrumentedTest { 18 | 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 23 | 24 | assertEquals("com.getcapacitor.app", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /android/app/src/main/java/geddit/buzl/uk/MainActivity.java: -------------------------------------------------------------------------------- 1 | package geddit.buzl.uk; 2 | 3 | import com.getcapacitor.BridgeActivity; 4 | 5 | public class MainActivity extends BridgeActivity {} 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-land-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-night/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable-port-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable/logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/drawable/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Geddit 4 | Geddit 5 | geddit.buzl.uk 6 | geddit.buzl.uk 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 17 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /android/app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.getcapacitor.myapp; 2 | 3 | import static org.junit.Assert.*; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | 14 | @Test 15 | public void addition_isCorrect() throws Exception { 16 | assertEquals(4, 2 + 2); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | mavenCentral() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:8.0.0' 11 | classpath 'com.google.gms:google-services:4.3.15' 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | apply from: "variables.gradle" 19 | 20 | allprojects { 21 | repositories { 22 | google() 23 | mavenCentral() 24 | } 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/capacitor-cordova-android-plugins/cordova.variables.gradle: -------------------------------------------------------------------------------- 1 | // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 | ext { 3 | cdvMinSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22 4 | // Plugin gradle extensions can append to this to have code run at the end. 5 | cdvPluginPostBuildExtras = [] 6 | cordovaConfig = [:] 7 | } -------------------------------------------------------------------------------- /android/capacitor.settings.gradle: -------------------------------------------------------------------------------- 1 | // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 | include ':capacitor-android' 3 | project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') 4 | 5 | include ':capacitor-app' 6 | project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android') 7 | 8 | include ':capacitor-app-launcher' 9 | project(':capacitor-app-launcher').projectDir = new File('../node_modules/@capacitor/app-launcher/android') 10 | 11 | include ':capacitor-browser' 12 | project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/browser/android') 13 | 14 | include ':capacitor-filesystem' 15 | project(':capacitor-filesystem').projectDir = new File('../node_modules/@capacitor/filesystem/android') 16 | 17 | include ':capacitor-haptics' 18 | project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/haptics/android') 19 | 20 | include ':capacitor-local-notifications' 21 | project(':capacitor-local-notifications').projectDir = new File('../node_modules/@capacitor/local-notifications/android') 22 | 23 | include ':capacitor-share' 24 | project(':capacitor-share').projectDir = new File('../node_modules/@capacitor/share/android') 25 | 26 | include ':capacitor-toast' 27 | project(':capacitor-toast').projectDir = new File('../node_modules/@capacitor/toast/android') 28 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | 19 | # AndroidX package structure to make it clearer which packages are bundled with the 20 | # Android operating system, and which are packaged with your app's APK 21 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 22 | android.useAndroidX=true 23 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | distributionSha256Sum=47a5bfed9ef814f90f8debcbbb315e8e7c654109acd224595ea39fca95c5d4da -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | include ':capacitor-cordova-android-plugins' 3 | project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') 4 | 5 | apply from: 'capacitor.settings.gradle' -------------------------------------------------------------------------------- /android/variables.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | minSdkVersion = 22 3 | compileSdkVersion = 33 4 | targetSdkVersion = 33 5 | androidxActivityVersion = '1.7.0' 6 | androidxAppCompatVersion = '1.6.1' 7 | androidxCoordinatorLayoutVersion = '1.2.0' 8 | androidxCoreVersion = '1.10.0' 9 | androidxFragmentVersion = '1.5.6' 10 | coreSplashScreenVersion = '1.0.0' 11 | androidxWebkitVersion = '1.6.1' 12 | junitVersion = '4.13.2' 13 | androidxJunitVersion = '1.1.5' 14 | androidxEspressoCoreVersion = '3.5.1' 15 | cordovaAndroidVersion = '10.1.1' 16 | } -------------------------------------------------------------------------------- /capacitor.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "appId": "geddit.buzl.uk", 3 | "appName": "Geddit", 4 | "webDir": "src/dist", 5 | "server": { 6 | "androidScheme": "https" 7 | } 8 | } -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/zsh 2 | set -e 3 | 4 | # Build 5 | vite build 6 | 7 | # Capacitor sync 8 | printf "\nSyncing to Android...\n" 9 | npx cap sync 10 | 11 | # Minify the geddit.js 12 | printf "\nAdding files to docs...\n" 13 | ./node_modules/.bin/terser ./src/js/geddit.js --compress --output=./docs/geddit.min.js 14 | 15 | # Copy README to docs 16 | cp README.md ./docs/ 17 | 18 | # Copy geddit.js to docs 19 | cp ./src/js/geddit.js ./docs/ 20 | 21 | # Push to git 22 | printf "\nPushing to git...\n" 23 | git add -A 24 | git commit -m "deploy via script" 25 | git push -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | Geddit Logo 4 | 5 |

Geddit

6 | 7 | Get it on F-Droid 10 | 11 |

12 | An open-source, Reddit client for Android without using their API 13 |
14 |

15 | GitHub Repo stars 16 | GitHub commit activity 17 | GitHub issues 18 | License 19 |
20 | Report Bug 21 | · 22 | Request Feature 23 |

24 |
25 | 26 | ## Installation 27 | Download the APK from [GitHub Releases](https://github.com/kaangiray26/geddit-app/releases) and install it. 28 | 29 | ## Screenshots 30 |
31 | 32 | 33 | 34 | 35 |
36 | 37 | ## How to make Geddit the default app for Reddit links? 38 | * [Check out this brief guide](https://github.com/kaangiray26/geddit-app/wiki/Enabling-App-Links) on how to enable app links for Geddit v1.3+ 39 | 40 | ## Are you a developer? 41 | You can use the heart of this project, the [Geddit Library](https://github.com/kaangiray26/geddit-app/blob/main/src/js/geddit.js), to build your own read-only Reddit applications. Well, at least until Reddit decides to terminate their RSS/JSON feeds. 42 | 43 | Also, there is a minifed version available: 44 | * [geddit.min.js](https://kaangiray26.github.io/geddit-app/geddit.min.js) (9.0kB) 45 | 46 | ## Disclaimer 47 | This project is an **open-source** software with the [GNU General Public License v3.0](https://github.com/kaangiray26/geddit-app/blob/main/LICENSE). The projects is nothing more than a simple example of how to use Reddit's RSS/JSON feeds to build a read-only Reddit client, and it is not intended to be used as a Reddit client. Instead, use the official Reddit app or any other Reddit client that uses Reddit's API for full functionality. **No data is collected** from the users and **no profit is made** from the app. Developers are not responsible for any damage caused by the app. **Use at your own risk.** 48 | -------------------------------------------------------------------------------- /docs/geddit.min.js: -------------------------------------------------------------------------------- 1 | class Geddit{constructor(){this.host="https://www.reddit.com",this.parameters={limit:25,include_over_18:!0},this.search_params={limit:25,include_over_18:!0,type:"sr,link,user"}}async getSubmissions(sort=null,subreddit=null,options={}){return sort=sort||"hot",subreddit=subreddit?"/r/"+subreddit:"",await fetch(this.host+subreddit+`/${sort}.json?`+new URLSearchParams(Object.assign({limit:25,include_over_18:!0},options))).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainHot(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/hot.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainBest(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/best.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainTop(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/top.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainNew(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/new.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainRising(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/rising.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getDomainControversial(domain,options=this.parameters){return await fetch(this.host+"/domain/"+domain+"/controversial.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,posts:data.children}))).catch((err=>null))}async getSubreddit(subreddit){return await fetch(this.host+"/r/"+subreddit+"/about.json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getSubredditRules(subreddit){return await fetch(this.host+"/r/"+subreddit+"/about/rules.json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getSubredditModerators(subreddit){return await fetch(this.host+"/r/"+subreddit+"/about/moderators.json").then((res=>res.json())).then((json=>json.data)).then(data={users:data.children}).catch((err=>null))}async getSubredditWikiPages(subreddit){return await fetch(this.host+"/r/"+subreddit+"/wiki/pages.json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getSubredditWikiPage(subreddit,page){return await fetch(this.host+"/r/"+subreddit+"/wiki/"+page+".json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getSubredditWikiPageRevisions(subreddit,page){return await fetch(this.host+"/r/"+subreddit+"/wiki/revisions"+page+".json").then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}async getPopularSubreddits(options=this.parameters){return await fetch(this.host+"/subreddits/popular.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,subreddits:data.children}))).catch((err=>null))}async getNewSubreddits(options=this.parameters){return await fetch(this.host+"/subreddits/new.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,subreddits:data.children}))).catch((err=>null))}async getPremiumSubreddits(options=this.parameters){return await fetch(this.host+"/subreddits/premium.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,subreddits:data.children}))).catch((err=>null))}async getDefaultSubreddits(options=this.parameters){return await fetch(this.host+"/subreddits/default.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,subreddits:data.children}))).catch((err=>null))}async getPopularUsers(options=this.parameters){return await fetch(this.host+"/users/popular.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,users:data.children}))).catch((err=>null))}async getNewUsers(options=this.parameters){return await fetch(this.host+"/users/new.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,users:data.children}))).catch((err=>null))}async searchSubmissions(query,options={}){options.q=query,options.type="link";let params={limit:25,include_over_18:!0};return console.log(this.host+"/search.json?"+new URLSearchParams(Object.assign(params,options))),await fetch(this.host+"/search.json?"+new URLSearchParams(Object.assign(params,options))).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async searchSubreddits(query,options={}){options.q=query;return await fetch(this.host+"/subreddits/search.json?"+new URLSearchParams(Object.assign({limit:25,include_over_18:!0},options))).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async searchUsers(query,options={}){options.q=query;return await fetch(this.host+"/users/search.json?"+new URLSearchParams(Object.assign({limit:25,include_over_18:!0},options))).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async searchAll(query,subreddit=null,options={}){options.q=query,subreddit=subreddit?"/r/"+subreddit:"";return await fetch(this.host+subreddit+"/search.json?"+new URLSearchParams(Object.assign({limit:25,include_over_18:!0,type:"sr,link,user"},options))).then((res=>res.json())).then((json=>Array.isArray(json)?{after:json[1].data.after,items:json[0].data.children.concat(json[1].data.children)}:{after:json.data.after,items:json.data.children})).catch((err=>null))}async getSubmission(id){return await fetch(this.host+"/by_id/"+id+".json").then((res=>res.json())).then((json=>json.data.children[0].data)).catch((err=>null))}async getSubmissionComments(id,options=this.parameters){return await fetch(this.host+"/comments/"+id+".json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>({submission:json[0].data.children[0],comments:json[1].data.children}))).catch((err=>null))}async getSubredditComments(subreddit,options=this.parameters){return await fetch(this.host+"/r/"+subreddit+"/comments.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}async getUser(username){return await fetch(this.host+"/user/"+username+"/about.json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getUserOverview(username,options=this.parameters){return await fetch(this.host+"/user/"+username+"/overview.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async getUserComments(username,options=this.parameters){return await fetch(this.host+"/user/"+username+"/comments.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async getUserSubmissions(username,options=this.parameters){return await fetch(this.host+"/user/"+username+"/submitted.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data)).then((data=>({after:data.after,items:data.children}))).catch((err=>null))}async getLiveThread(id){return await fetch(this.host+"/live/"+id+"/about.json").then((res=>res.json())).then((json=>json.data)).catch((err=>null))}async getLiveThreadUpdates(id,options=this.parameters){return await fetch(this.host+"/live/"+id+".json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}async getLiveThreadContributors(id,options=this.parameters){return await fetch(this.host+"/live/"+id+"/contributors.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}async getLiveThreadDiscussions(id,options=this.parameters){return await fetch(this.host+"/live/"+id+"/discussions.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}async getLiveThreadsNow(options=this.parameters){return await fetch(this.host+"/live/happening_now.json?"+new URLSearchParams(options)).then((res=>res.json())).then((json=>json.data.children)).catch((err=>null))}}export{Geddit}; -------------------------------------------------------------------------------- /docs/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "version_code": 3, 3 | "version_name": "1.3" 4 | } -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/3.txt: -------------------------------------------------------------------------------- 1 | * New video player with controls 2 | * Update manager 3 | * Support for default app links 4 | * Sane versioning -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | Geddit is an open-source Reddit client that is designed to be fast, beautiful and simple. Its main objective is to not use the Reddit API directly, but instead use the RSS/JSON feeds to display content. This allows the app to view Reddit without being subject to API limits, changes and problems. Geddit works without a Reddit account, which also means that you can stay anonymous while browsing Reddit, if you are concerned about privacy. 2 | 3 | Some of the features of Geddit include: 4 | 5 | * View posts, comments, subreddits and users 6 | * View images, gifs, videos and self posts 7 | * Access NSFW content 8 | * View your subscribed subreddits 9 | * Save photos to your device 10 | * Share posts 11 | * Search for posts, subreddits and users 12 | * Support for app links -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/featureGraphic.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | An open-source, Reddit client for Android without using their API -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Geddit -------------------------------------------------------------------------------- /icons/icon-128.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-128.webp -------------------------------------------------------------------------------- /icons/icon-192.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-192.webp -------------------------------------------------------------------------------- /icons/icon-256.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-256.webp -------------------------------------------------------------------------------- /icons/icon-48.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-48.webp -------------------------------------------------------------------------------- /icons/icon-512.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-512.webp -------------------------------------------------------------------------------- /icons/icon-72.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-72.webp -------------------------------------------------------------------------------- /icons/icon-96.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/icons/icon-96.webp -------------------------------------------------------------------------------- /images/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/images/screenshot_1.png -------------------------------------------------------------------------------- /images/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/images/screenshot_2.png -------------------------------------------------------------------------------- /images/screenshot_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/images/screenshot_3.png -------------------------------------------------------------------------------- /images/screenshot_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/images/screenshot_4.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "geddit-app", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build && npx cap sync", 7 | "preview": "vite preview", 8 | "deploy": "sh deploy.sh" 9 | }, 10 | "dependencies": { 11 | "@capacitor/android": "^5.2.2", 12 | "@capacitor/app": "^5.0.6", 13 | "@capacitor/app-launcher": "^5.0.6", 14 | "@capacitor/browser": "^5.0.6", 15 | "@capacitor/core": "^5.2.2", 16 | "@capacitor/filesystem": "^5.1.1", 17 | "@capacitor/haptics": "^5.0.6", 18 | "@capacitor/local-notifications": "^5.0.6", 19 | "@capacitor/share": "^5.0.6", 20 | "@capacitor/toast": "^5.0.6", 21 | "@popperjs/core": "^2.11.8", 22 | "@vueuse/core": "^10.2.1", 23 | "bootstrap": "^5.3.0", 24 | "fuse.js": "^6.6.2", 25 | "hammerjs": "^2.0.8", 26 | "hls.js": "^1.4.10", 27 | "marked": "^5.1.1", 28 | "showdown": "^2.1.0", 29 | "vue": "^3.3.4", 30 | "vue-router": "^4.2.4" 31 | }, 32 | "devDependencies": { 33 | "@capacitor/assets": "^2.0.4", 34 | "@capacitor/cli": "^5.2.2", 35 | "@vitejs/plugin-vue": "^4.2.3", 36 | "sass": "^1.64.0", 37 | "terser": "^5.19.1", 38 | "vite": "^4.4.6" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/resources/logo.png -------------------------------------------------------------------------------- /src/assets/nord.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --nord0: #2e3440; 3 | --nord1: #3b4252; 4 | --nord2: #434c5e; 5 | --nord3: #4c566a; 6 | --nord4: #d8dee9; 7 | --nord5: #e5e9f0; 8 | --nord6: #eceff4; 9 | --nord7: #8fbcbb; 10 | --nord8: #88c0d0; 11 | --nord9: #81a1c1; 12 | --nord10: #5e81ac; 13 | --nord11: #bf616a; 14 | --nord12: #d08770; 15 | --nord13: #ebcb8b; 16 | --nord14: #a3be8c; 17 | --nord15: #b48ead; 18 | } 19 | 20 | .text-0 { 21 | color: var(--nord0); 22 | } 23 | 24 | .text-1 { 25 | color: var(--nord1); 26 | } 27 | 28 | .text-2 { 29 | color: var(--nord2); 30 | } 31 | 32 | .text-3 { 33 | color: var(--nord3); 34 | } 35 | 36 | .text-4 { 37 | color: var(--nord4); 38 | } 39 | 40 | .text-5 { 41 | color: var(--nord5); 42 | } 43 | 44 | .text-6 { 45 | color: var(--nord6); 46 | } 47 | 48 | .text-7 { 49 | color: var(--nord7); 50 | } 51 | 52 | .text-8 { 53 | color: var(--nord8); 54 | } 55 | 56 | .text-9 { 57 | color: var(--nord9); 58 | } 59 | 60 | .text-10 { 61 | color: var(--nord10); 62 | } 63 | 64 | .text-11 { 65 | color: var(--nord11); 66 | } 67 | 68 | .text-12 { 69 | color: var(--nord12); 70 | } 71 | 72 | .text-13 { 73 | color: var(--nord13); 74 | } 75 | 76 | .text-14 { 77 | color: var(--nord14); 78 | } 79 | 80 | .text-15 { 81 | color: var(--nord15); 82 | } 83 | 84 | .bg-0 { 85 | background-color: var(--nord0); 86 | } 87 | 88 | .bg-1 { 89 | background-color: var(--nord1); 90 | } 91 | 92 | .bg-2 { 93 | background-color: var(--nord2); 94 | } 95 | 96 | .bg-3 { 97 | background-color: var(--nord3); 98 | } 99 | 100 | .bg-4 { 101 | background-color: var(--nord4); 102 | } 103 | 104 | .bg-5 { 105 | background-color: var(--nord5); 106 | } 107 | 108 | .bg-6 { 109 | background-color: var(--nord6); 110 | } 111 | 112 | .bg-7 { 113 | background-color: var(--nord7); 114 | } 115 | 116 | .bg-8 { 117 | background-color: var(--nord8); 118 | } 119 | 120 | .bg-9 { 121 | background-color: var(--nord9); 122 | } 123 | 124 | .bg-10 { 125 | background-color: var(--nord10); 126 | } 127 | 128 | .bg-11 { 129 | background-color: var(--nord11); 130 | } 131 | 132 | .bg-12 { 133 | background-color: var(--nord12); 134 | } 135 | 136 | .bg-13 { 137 | background-color: var(--nord13); 138 | } 139 | 140 | .bg-14 { 141 | background-color: var(--nord14); 142 | } 143 | 144 | .bg-15 { 145 | background-color: var(--nord15); 146 | } -------------------------------------------------------------------------------- /src/components/App.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | -------------------------------------------------------------------------------- /src/components/CompactComment.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | -------------------------------------------------------------------------------- /src/components/CompactPost.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 191 | -------------------------------------------------------------------------------- /src/components/CompactSubreddit.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | -------------------------------------------------------------------------------- /src/components/CompactUser.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/FullPost.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 169 | -------------------------------------------------------------------------------- /src/components/Gallery.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | -------------------------------------------------------------------------------- /src/components/Home.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | -------------------------------------------------------------------------------- /src/components/NavigationBar.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | -------------------------------------------------------------------------------- /src/components/Options.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | -------------------------------------------------------------------------------- /src/components/Post.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | -------------------------------------------------------------------------------- /src/components/Preview.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/Search.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | -------------------------------------------------------------------------------- /src/components/Settings.vue: -------------------------------------------------------------------------------- 1 | 105 | 106 | 162 | -------------------------------------------------------------------------------- /src/components/Subreddit.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | -------------------------------------------------------------------------------- /src/components/Subreddits.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | -------------------------------------------------------------------------------- /src/components/TopAppBar.vue: -------------------------------------------------------------------------------- 1 | 62 | 63 | -------------------------------------------------------------------------------- /src/components/TopAppBarSubreddit.vue: -------------------------------------------------------------------------------- 1 | 62 | 63 | -------------------------------------------------------------------------------- /src/components/UpdateManager.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | -------------------------------------------------------------------------------- /src/components/User.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | -------------------------------------------------------------------------------- /src/components/UserComments.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/UserOverview.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/UserPosts.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /src/contents/CompactEmbed.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /src/contents/CompactFallback.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /src/contents/CompactGallery.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /src/contents/CompactImage.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /src/contents/CompactLink.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /src/contents/CompactText.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /src/contents/FullGallery.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /src/contents/FullImage.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /src/contents/FullText.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /src/contents/FullVideo.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | -------------------------------------------------------------------------------- /src/contents/Placeholder.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Geddit 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/js/event.js: -------------------------------------------------------------------------------- 1 | // event.js 2 | 3 | async function open_image_viewer(src) { 4 | window.dispatchEvent(new CustomEvent('image_viewer', { detail: src })) 5 | } 6 | 7 | async function open_gallery_viewer(src) { 8 | window.dispatchEvent(new CustomEvent('gallery_viewer', { detail: src })) 9 | } 10 | 11 | export { open_image_viewer, open_gallery_viewer } -------------------------------------------------------------------------------- /src/js/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from '/components/App.vue' 3 | import router from '/router' 4 | 5 | // Import our custom CSS 6 | import '/scss/styles.scss' 7 | import '/assets/styles.css' 8 | 9 | if (!localStorage.getItem("pages")) { 10 | localStorage.setItem("pages", JSON.stringify([])); 11 | } 12 | 13 | if (!localStorage.getItem("subreddits")) { 14 | localStorage.setItem("subreddits", JSON.stringify([])); 15 | } 16 | 17 | if (!localStorage.getItem("hidden_posts")) { 18 | localStorage.setItem("hidden_posts", JSON.stringify([])); 19 | } 20 | 21 | if (!localStorage.getItem("autoplay")) { 22 | localStorage.setItem("autoplay", JSON.stringify(true)); 23 | } 24 | 25 | if (!localStorage.getItem("title_size")) { 26 | localStorage.setItem("title_size", JSON.stringify('title-medium')); 27 | } 28 | 29 | if (!localStorage.getItem("check_for_updates")) { 30 | localStorage.setItem("check_for_updates", JSON.stringify(true)); 31 | } 32 | 33 | if (!localStorage.getItem("in_app_browser")) { 34 | localStorage.setItem("in_app_browser", JSON.stringify(true)); 35 | } 36 | 37 | if (!localStorage.getItem("share_old_reddit")) { 38 | localStorage.setItem("share_old_reddit", JSON.stringify(false)); 39 | } 40 | 41 | // Set options 42 | document.body.setAttribute("autoplay", JSON.parse(localStorage.getItem("autoplay"))); 43 | 44 | createApp(App).use(router).mount('#app'); 45 | -------------------------------------------------------------------------------- /src/js/store.js: -------------------------------------------------------------------------------- 1 | // store.js 2 | 3 | import { reactive } from "vue"; 4 | 5 | const store = reactive({ 6 | hidden: JSON.parse(localStorage.getItem('hidden_posts')) || [], 7 | title_size: JSON.parse(localStorage.getItem("title_size")) || 'title-medium', 8 | }) 9 | 10 | async function hide(id) { 11 | store.hidden.push(id); 12 | } 13 | 14 | async function unhide(id) { 15 | store.hidden = store.hidden.filter(post_id => post_id != id); 16 | } 17 | 18 | function save_hidden() { 19 | localStorage.setItem('hidden_posts', JSON.stringify(store.hidden)) 20 | } 21 | 22 | async function clear_hidden() { 23 | store.hidden = []; 24 | } 25 | 26 | async function is_hidden(id) { 27 | return store.hidden.includes(id); 28 | } 29 | 30 | export { store, hide, unhide, is_hidden, save_hidden, clear_hidden } -------------------------------------------------------------------------------- /src/manifest.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "background_color": "#000000", 3 | "icons": [ 4 | { 5 | "src": "../../icons/icon-48.webp", 6 | "type": "image/png", 7 | "sizes": "48x48", 8 | "purpose": "any maskable" 9 | }, 10 | { 11 | "src": "../../icons/icon-72.webp", 12 | "type": "image/png", 13 | "sizes": "72x72", 14 | "purpose": "any maskable" 15 | }, 16 | { 17 | "src": "../../icons/icon-96.webp", 18 | "type": "image/png", 19 | "sizes": "96x96", 20 | "purpose": "any maskable" 21 | }, 22 | { 23 | "src": "../../icons/icon-128.webp", 24 | "type": "image/png", 25 | "sizes": "128x128", 26 | "purpose": "any maskable" 27 | }, 28 | { 29 | "src": "../../icons/icon-192.webp", 30 | "type": "image/png", 31 | "sizes": "192x192", 32 | "purpose": "any maskable" 33 | }, 34 | { 35 | "src": "../../icons/icon-256.webp", 36 | "type": "image/png", 37 | "sizes": "256x256", 38 | "purpose": "any maskable" 39 | }, 40 | { 41 | "src": "../../icons/icon-512.webp", 42 | "type": "image/png", 43 | "sizes": "512x512", 44 | "purpose": "any maskable" 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /src/public/images/all.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/src/public/images/favicon.png -------------------------------------------------------------------------------- /src/public/images/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/src/public/images/logo.png -------------------------------------------------------------------------------- /src/public/images/logo_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/src/public/images/logo_background.jpg -------------------------------------------------------------------------------- /src/public/images/logo_compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaangiray26/geddit-app/7eb5cc2499b4d8964436fc30ac4131d9db93c64e/src/public/images/logo_compressed.png -------------------------------------------------------------------------------- /src/public/images/popular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/public/images/premium.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/public/images/subreddit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/public/images/subreddit_b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/public/images/subreddit_w.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/public/images/text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/public/images/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router'; 2 | 3 | import User from '/components/User.vue'; 4 | import Home from '/components/Home.vue'; 5 | import Post from '/components/Post.vue'; 6 | import Search from '/components/Search.vue'; 7 | import Subreddit from '/components/Subreddit.vue'; 8 | import Subreddits from '/components/Subreddits.vue'; 9 | import Settings from '/components/Settings.vue'; 10 | import Gallery from '/components/Gallery.vue'; 11 | import Preview from '/components/Preview.vue'; 12 | 13 | const routes = [ 14 | { 15 | path: "/", 16 | component: Home, 17 | name: "home", 18 | meta: { 19 | component: "home" 20 | } 21 | }, 22 | { 23 | path: "/subreddits", 24 | component: Subreddits, 25 | name: "subreddits", 26 | meta: { 27 | component: "subreddits" 28 | } 29 | }, 30 | { 31 | path: "/search", 32 | component: Search, 33 | name: "search", 34 | meta: { 35 | component: "search" 36 | }, 37 | }, 38 | { 39 | path: "/settings", 40 | component: Settings, 41 | name: "settings", 42 | meta: { 43 | component: "settings" 44 | }, 45 | }, 46 | { 47 | path: "/gallery", 48 | component: Gallery, 49 | name: "gallery", 50 | meta: { 51 | component: "gallery" 52 | }, 53 | }, 54 | { 55 | path: "/post/:id", 56 | alias: ["/r/:subreddit?/comments/:id/:title?", "/comments/:id/:title?"], 57 | component: Post, 58 | name: "post", 59 | meta: { 60 | component: "post" 61 | }, 62 | }, 63 | { 64 | path: "/r/:id/:sort?", 65 | component: Subreddit, 66 | name: "subreddit", 67 | meta: { 68 | component: "subreddit" 69 | }, 70 | }, 71 | { 72 | path: "/u/:id/:page?", 73 | alias: "/user/:id/:page?", 74 | component: User, 75 | name: "user", 76 | meta: { 77 | component: "user" 78 | } 79 | }, 80 | // Catch all other file requests 81 | { 82 | path: "/preview/:id/:ext", 83 | component: Preview, 84 | name: "preview", 85 | meta: { 86 | component: "preview" 87 | } 88 | } 89 | ]; 90 | 91 | const router = createRouter({ 92 | history: createWebHistory(), 93 | routes 94 | }); 95 | 96 | router.beforeEach((to, from, next) => { 97 | let pages = JSON.parse(localStorage.getItem("pages")); 98 | pages = pages.slice(-1); 99 | 100 | pages.push({ 101 | path: from.path, 102 | scroll: document.querySelector('.content-view').scrollTop 103 | }) 104 | localStorage.setItem("pages", JSON.stringify(pages)); 105 | next(); 106 | }); 107 | 108 | export default router -------------------------------------------------------------------------------- /src/scss/styles.scss: -------------------------------------------------------------------------------- 1 | // Import all of Bootstrap's CSS 2 | @import "bootstrap/scss/bootstrap" -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | const path = require('path') 7 | 8 | // https://vitejs.dev/config/ 9 | export default defineConfig({ 10 | root: path.resolve(__dirname, 'src'), 11 | server: { 12 | port: 8000, 13 | hot: true, 14 | }, 15 | plugins: [vue()], 16 | resolve: { 17 | alias: { 18 | '@': fileURLToPath(new URL('./src', import.meta.url)), 19 | 'bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'), 20 | 'hammerjs': path.resolve(__dirname, 'node_modules/hammerjs'), 21 | 'showdown': path.resolve(__dirname, 'node_modules/showdown'), 22 | '@capacitor/core': path.resolve(__dirname, 'node_modules/@capacitor/core'), 23 | } 24 | }, 25 | build: { 26 | rollupOptions: { 27 | output: { 28 | manualChunks(id) { 29 | if (id.includes('node_modules')) { 30 | return id.toString().split('node_modules/')[1].split('/')[0].toString(); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | }) 37 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { publicPath: '/' } --------------------------------------------------------------------------------