+
+DrugStore - Android app is the client side app for ordering medicines.
+It is free and open source.
+DrugStore for Android is a companion app for [Drugstore Web](https://drugstore.frontendsourcecode.com/).
+DrugStore WebApp is for administration of orders on the admin(DrugStore) side.
+
+
+
+## About
+
+With this app, customers can order medicines from the pharmacy it is connected to.
+The pharmacy has to host the companion administration web-app [Drugstore Web](https://drugstore.frontendsourcecode.com/).
+
+
+## Admin Details
+
+[Admin Panel](https://drugstore.frontendsourcecode.com/)
+
+UserName: Admin
+
+Password: Admin@2020
+
+OTP For Android Verification: 000000
+
+## Features
+The android app lets you:
+- Authenticate via phone and password.
+- Super simple sign up process with auto verification of OTP.
+- Completely ad-free.
+- Material Design.
+- Specify medicine names.
+- Or take picture of prescription and order.
+- Realtime update.
+- Update minimum order value in realtime.
+- Block specific users from ordering.
+- Multiple order statuses.
+- Push notification to notifiy order status change.
+
+
+
+## Screenshots
+
+| Splash | Login | Register |
+| ------ | ---- | ------ |
+|
|
|
|
+
+| Home | Category | Detail |
+| ------ | ---- | ------ |
+|
|
|
|
+
+| Products | Cart | Checkout |
+| ------ | ---- | ------ |
+|
|
|
|
+
+| Order | Order Details | Prescription |
+| ------ | ---- | ------ |
+|
|
|
|
+
+
+## Permissions
+
+On Android versions prior to Android 6.0, pharmrmacy android requires the following permissions:
+- Full Network Access.
+- Read and write access to external storage - To access prescription images
+- Camera access - To capture image of prescription
+- Receive sms - To access OTP code and verify automatically
+
+## Contributing
+You are free to use and modify the app.
+
+
+## License
+
+This application is released under GNU GPLv3 (see [LICENSE](LICENSE)).
+Some of the used libraries are released under different licenses.
diff --git a/Android-SourceCode/app/.gitignore b/Android-SourceCode/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/Android-SourceCode/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Android-SourceCode/app/build.gradle b/Android-SourceCode/app/build.gradle
new file mode 100644
index 0000000..9b3d866
--- /dev/null
+++ b/Android-SourceCode/app/build.gradle
@@ -0,0 +1,62 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+
+}
+
+android {
+ compileSdk 32
+
+ defaultConfig {
+ applicationId "com.frontendsource.drugstore"
+ minSdk 21
+ targetSdk 32
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ dataBinding {
+ enabled = true
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ namespace 'com.frontendsource.drugstore'
+
+}
+
+
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.5.1'
+ implementation 'com.google.android.material:material:1.7.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'androidx.cardview:cardview:1.0.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.recyclerview:recyclerview:1.2.1'
+ implementation 'com.squareup.picasso:picasso:2.71828'
+ implementation 'de.hdodenhof:circleimageview:2.2.0'
+ implementation 'com.google.code.gson:gson:2.8.9'
+ implementation 'com.squareup.retrofit2:retrofit:2.6.2'
+ implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
+ implementation 'com.google.android.play:core:1.10.3'
+ implementation 'com.github.IamIsPra:Sheriff:1.0.2'
+ implementation 'com.google.firebase:firebase-messaging:23.1.0'
+ implementation 'com.google.firebase:firebase-analytics:21.2.0'
+ implementation 'com.google.android.play:core:1.10.3'
+ implementation 'io.github.ParkSangGwon:tedimagepicker:1.2.8'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+}
\ No newline at end of file
diff --git a/Android-SourceCode/app/debug/app-debug.aab b/Android-SourceCode/app/debug/app-debug.aab
new file mode 100644
index 0000000..4b6fddb
Binary files /dev/null and b/Android-SourceCode/app/debug/app-debug.aab differ
diff --git a/Android-SourceCode/app/google-services.json b/Android-SourceCode/app/google-services.json
new file mode 100644
index 0000000..143a25e
--- /dev/null
+++ b/Android-SourceCode/app/google-services.json
@@ -0,0 +1,47 @@
+{
+ "project_info": {
+ "project_number": "668965673854",
+ "project_id": "drugstore-9b873",
+ "storage_bucket": "drugstore-9b873.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:668965673854:android:574de1cb1ea76aa84f712f",
+ "android_client_info": {
+ "package_name": "com.frontendsource.drugstore"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "668965673854-tgognipqa37skaj9ns9ivnnp70r4brav.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.frontendsource.drugstore",
+ "certificate_hash": "2c1e00f377a13de073b109062b69fe650cf3729f"
+ }
+ },
+ {
+ "client_id": "668965673854-q0ceredo4h3m7j7i10ff9p8b9q4vq51n.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBrdCh1jNwCBTbRd0iWJnOfiItImZ8h23E"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "668965673854-q0ceredo4h3m7j7i10ff9p8b9q4vq51n.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/Android-SourceCode/app/proguard-rules.pro
similarity index 94%
rename from app/proguard-rules.pro
rename to Android-SourceCode/app/proguard-rules.pro
index f1b4245..481bb43 100644
--- a/app/proguard-rules.pro
+++ b/Android-SourceCode/app/proguard-rules.pro
@@ -18,4 +18,4 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/Android-SourceCode/app/release/app-release.aab b/Android-SourceCode/app/release/app-release.aab
new file mode 100644
index 0000000..82f8a85
Binary files /dev/null and b/Android-SourceCode/app/release/app-release.aab differ
diff --git a/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java b/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..a314e9e
--- /dev/null
+++ b/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.frontendsource.drugstore;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.frontendsource.drugstore", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Android-SourceCode/app/src/main/AndroidManifest.xml b/Android-SourceCode/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..16e6668
--- /dev/null
+++ b/Android-SourceCode/app/src/main/AndroidManifest.xml
@@ -0,0 +1,119 @@
+
+