Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
42b7677
feat : implement (real) firebase use cases
Andi-IM Aug 9, 2023
a3f94de
feat: implement basic mvvm android arch
Andi-IM Aug 12, 2023
71b3bfd
feat: implementation testing
Andi-IM Aug 12, 2023
fb4345c
test: composing testing
Andi-IM Aug 12, 2023
fe44d11
build: update firebase emulator settings
Andi-IM Aug 13, 2023
11abfce
build: adding testing implementations for unit test and instrument test
Andi-IM Aug 13, 2023
6d8f1c5
refactor: fixing route
Andi-IM Aug 13, 2023
359b45b
test: adding tags for testing
Andi-IM Aug 13, 2023
7ba4f9e
refactor: code cleanup
Andi-IM Aug 13, 2023
755529c
refactor: code cleanup for service
Andi-IM Aug 13, 2023
cae448f
test: creating tags for composables
Andi-IM Aug 13, 2023
346a0f9
test: updating module for firebase emulator
Andi-IM Aug 13, 2023
0259ce3
refactor: separating module (make service module instead take in one …
Andi-IM Aug 13, 2023
e599196
test: implement test supports
Andi-IM Aug 13, 2023
d383f11
refactor: taking service to real case and refactor plant scan app (i'…
Andi-IM Aug 13, 2023
0564893
test: (SHOW TIME) implementing test case for unit and UI :cheers:
Andi-IM Aug 13, 2023
4626b6d
build: update dependency to implement camera in main module (try to m…
Andi-IM Aug 14, 2023
02df1b2
test: (never mind) try to create end-to-end test with compose ui
Andi-IM Aug 14, 2023
b980cd2
refactor and create photo preview
Andi-IM Aug 15, 2023
91fc799
feat: Implement Detection API
Andi-IM Aug 18, 2023
4ecdf48
Merge pull request #7 from Andi-IM/feature/architecture_fragment_based
Andi-IM Aug 18, 2023
5c4e061
test
Andi-IM Sep 4, 2023
205cf41
update dependency settings
Andi-IM Sep 5, 2023
aa35e4c
update dependency settings,
Andi-IM Sep 5, 2023
d100896
update detail screen and viewmodel
Andi-IM Sep 5, 2023
3308ea4
refactoring use case and repository
Andi-IM Sep 5, 2023
841a237
create analytics and network monitor,
Andi-IM Sep 6, 2023
51375af
Implement Jank Monitoring
Andi-IM Sep 6, 2023
cd885f0
Adď debug utils
Andi-IM Sep 6, 2023
ac159a9
refactor module position, fixing firestore
Andi-IM Sep 6, 2023
f46811e
refactor routing in splash
Andi-IM Sep 6, 2023
2e6ee25
update routes and refactor navigation
Andi-IM Sep 6, 2023
aea81aa
[feature] implement network checking and alerting by snackbar
Andi-IM Sep 6, 2023
bc489b9
implement navigation trough search, fixing routing, implement for det…
Andi-IM Sep 6, 2023
cbc8906
update repository, and fix bug when click annotated text
Andi-IM Sep 6, 2023
70a5ccb
implement webviewmodel
Andi-IM Sep 6, 2023
c492f72
refactoring view model
Andi-IM Sep 6, 2023
35d58dd
refactor finished, remove obsolete viewmodel
Andi-IM Sep 6, 2023
84fbf9f
update for prod flavor
Andi-IM Sep 6, 2023
45e4f62
update manifest
Andi-IM Sep 6, 2023
b997b18
unified auth screen
Andi-IM Sep 6, 2023
004776b
fix routing camera
Andi-IM Sep 7, 2023
c7794a9
update camera view settings
Andi-IM Sep 7, 2023
54e68fd
using request newtork base instead using hardware
Andi-IM Sep 7, 2023
9f75295
refactor and migrate to ksp from dagger hilt
Andi-IM Sep 7, 2023
a5c342c
refactor and migrate to ksp from dagger hilt
Andi-IM Sep 7, 2023
607f9e3
implement suggestion
Andi-IM Sep 8, 2023
67fa15b
refactor auth, changing name
Andi-IM Sep 8, 2023
71b934d
refactor camera, changing action naming
Andi-IM Sep 8, 2023
e941e5b
adding, some action for detection
Andi-IM Sep 8, 2023
f0ca438
refactor naming and give some string resource
Andi-IM Sep 8, 2023
8717ce5
update implementing suggestion
Andi-IM Sep 8, 2023
2670fa6
refactor detect screen and apply route to suggestion
Andi-IM Sep 8, 2023
3f16f31
implement dialog if something sends a suggestion
Andi-IM Sep 8, 2023
1386f39
"Mantap" adding alternative function for adding image trough image ga…
Andi-IM Sep 8, 2023
2b3a03f
remapping with new snackbar, add route to somewhere when action called
Andi-IM Sep 8, 2023
5f9afb5
update suggestion feature, remapping again the project structure (got…
Andi-IM Sep 12, 2023
14e7d9a
refactor use case, update in history
Andi-IM Oct 3, 2023
d4b76d6
DETEKT COMPLETE
Andi-IM Oct 3, 2023
43809ca
update extensions
Andi-IM Oct 4, 2023
f8787dd
update models
Andi-IM Oct 5, 2023
5d474a6
update in find screen with simplified semantic
Andi-IM Oct 5, 2023
d1cf731
remove unused, recreate new project structure
Andi-IM Oct 25, 2023
e1ced95
update projects
Andi-IM Oct 26, 2023
1c91455
update projects
Andi-IM Oct 26, 2023
976b854
update projects
Andi-IM Oct 27, 2023
3510acb
add assets for testing
Andi-IM Oct 27, 2023
f358bd2
UPDATE INCLUDING DETEKT
Andi-IM Oct 27, 2023
f0c3aee
updating features and core auth
Andi-IM Oct 29, 2023
79abe46
done of navigation on main app
Andi-IM Oct 30, 2023
11680ce
updating in design and implementing camera
Andi-IM Nov 1, 2023
53fdfdc
done overall except suggest
Andi-IM Nov 7, 2023
6130cf3
remove work and finish service
Andi-IM Nov 8, 2023
c66df86
update documentation
Andi-IM Nov 8, 2023
52d9953
Merge pull request #19 from Andi-IM/feature/architecture_full_compose
Andi-IM Nov 8, 2023
d6d3686
update documentation
Andi-IM Nov 9, 2023
37e2a8b
Merge pull request #20 from Andi-IM/feature/architecture_full_compose
Andi-IM Nov 9, 2023
faf244e
final
Andi-IM Nov 9, 2023
a736478
Merge pull request #21 from Andi-IM/feature/architecture_full_compose
Andi-IM Nov 9, 2023
f40113f
refactoring #2
Andi-IM Nov 10, 2023
e734735
refactoring #3
Andi-IM Nov 10, 2023
a0c774d
Merge pull request #23 from Andi-IM/feature/architecture_full_compose
Andi-IM Nov 10, 2023
fde7dad
update version of dependency
Andi-IM Nov 10, 2023
b01f9f8
Merge pull request #24 from Andi-IM/versioning
Andi-IM Nov 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# https://editorconfig.org/
# This configuration is used by ktlint when spotless invokes it

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma=true
ij_kotlin_allow_trailing_comma_on_call_site=true
139 changes: 0 additions & 139 deletions .idea/codeStyles/Project.xml

This file was deleted.

5 changes: 0 additions & 5 deletions .idea/codeStyles/codeStyleConfig.xml

This file was deleted.

Binary file removed .idea/icon.png
Binary file not shown.
Binary file removed .idea/icon_dark.png
Binary file not shown.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2020 <Source Code Author>
Copyright (c) 2020 Andi-IM

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
48 changes: 6 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# kotlin-android-template πŸ€–
# PlantScan Android Project Repository πŸ€–

[![Use this template](https://img.shields.io/badge/from-kotlin--android--template-brightgreen?logo=dropbox)](https://github.com/cortinico/kotlin-android-template/generate) ![Pre Merge Checks](https://github.com/cortinico/kotlin-android-template/workflows/Pre%20Merge%20Checks/badge.svg) ![License](https://img.shields.io/github/license/cortinico/kotlin-android-template.svg) ![Language](https://img.shields.io/github/languages/top/cortinico/kotlin-android-template?color=blue&logo=kotlin)
[![Use this template](https://img.shields.io/badge/from-kotlin--android--template-brightgreen?logo=dropbox)](https://github.com/cortinico/kotlin-android-template/generate) ![Pre Merge Checks](https://github.com/Andi-IM/PlantScan/workflows/Pre%20Merge%20Checks/badge.svg) ![License](https://img.shields.io/github/license/Andi-IM/PlantScan.svg) ![Language](https://img.shields.io/github/languages/top/Andi-IM/PlantScan?color=blue&logo=kotlin)

A simple Github template that lets you create an **Android/Kotlin** project and be up and running in a **few seconds**.
Lets identify `Orchid` flower around you! ~ A final project by [Andi Irham](https://github.com/Andi-IM)

This template is focused on delivering a project with **static analysis** and **continuous integration** already in place.

## How to use πŸ‘£

Expand All @@ -19,7 +18,7 @@ Once created don't forget to update the:

- **100% Kotlin-only template**.
- 4 Sample modules (Android app, Android library, Kotlin library, Jetpack Compose Activity).
- Jetpack Compose setup ready to use.
- Jetpack Compose setup ready to use.
- Sample Espresso, Instrumentation & JUnit tests.
- 100% Gradle Kotlin DSL setup.
- CI Setup with GitHub Actions.
Expand Down Expand Up @@ -53,45 +52,10 @@ There are currently the following workflows available:
- [Publish Snapshot](.github/workflows/publish-snapshot.yaml) - Will publish a `-SNAPSHOT` of the libraries to Sonatype.
- [Publish Release](.github/workflows/publish-release.yaml) - Will publish a new release version of the libraries to Maven Central on tag pushes.

## Publishing πŸš€

The template is setup to be **ready to publish** a library/artifact on a Maven Repository.

For every module you want to publish you simply have to add the `publish` plugin:

```
plugins {
publish
}
```

### To Maven Central

In order to use this template to publish on Maven Central, you need to configure some secrets on your repository:

| Secret name | Value |
| --- | --- |
| `ORG_GRADLE_PROJECT_NEXUS_USERNAME` | The username you use to access Sonatype's services (such as [Nexus](https://oss.sonatype.org/) and [Jira](https://issues.sonatype.org/)) |
| `ORG_GRADLE_PROJECT_NEXUS_PASSWORD` | The password you use to access Sonatype's services (such as [Nexus](https://oss.sonatype.org/) and [Jira](https://issues.sonatype.org/)) |
| `ORG_GRADLE_PROJECT_SIGNING_KEY` | The GPG Private key to sign your artifacts. You can obtain it with `gpg --armor --export-secret-keys <your@email.here>` or you can create one key online on [pgpkeygen.com](https://pgpkeygen.com). The key starts with a `-----BEGIN PGP PRIVATE KEY BLOCK-----`. |
| `ORG_GRADLE_PROJECT_SIGNING_PWD` | The passphrase to unlock your private key (you picked it when creating the key). |

The template already attaches `-sources.jar` to your publications via the new AGP publishing DSL.

Once set up, the following workflows will take care of publishing:

- [Publish Snapshot](.github/workflows/publish-snapshot.yaml) - To publish `-SNAPSHOT` versions to Sonatype. The workflow is setup to run either manually (with `workflow_dispatch`) or on every merge.
- [Publish Release](.github/workflows/publish-release.yaml) - Will publish a new release version of the libraries to Maven Central on tag pushes. You can trigger the workflow also manually if needed.

### To Jitpack

If you're using [JitPack](https://jitpack.io/), you don't need any further configuration and you can just configure the repo on JitPack.

You probably want to disable the [Publish Snapshot] and [Publish Release](.github/workflows/publish-release.yaml) workflows (delete the files), as Jitpack will take care of that for you.

## Project Structure

The project includes three sub-projects, each in their own subdirectories:
This project structure was inspired from [Now in Android](https://github.com/android/nowinandroid) repository. The project includes three sub-projects, each in their own subdirectories:

- **`app`:** The source for the final Android application.
- **`library-android`:** The source for an Android library including UI.
Expand All @@ -111,4 +75,4 @@ Finally, the following hidden top-level directories provide functionality for sp

## Contributing 🀝

Feel free to open a issue or submit a pull request for any bugs/improvements.
Feel free to open a issue or submit a pull request for any bugs/improvements.
1 change: 1 addition & 0 deletions app-ps-catalog/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
1 change: 1 addition & 0 deletions app-ps-catalog/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# :app-ps-catalog module
42 changes: 42 additions & 0 deletions app-ps-catalog/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import com.github.andiim.plantscan.app.FlavorDimension
import com.github.andiim.plantscan.app.PsFlavor

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.android.application.compose)
}

android {
defaultConfig {
applicationId = "com.github.andiim.pscatalog"
versionCode = 1
versionName = "1.0"

// The UI catalog does not depend on content from the app, however, it depends on modules
// which do, so we must specify a default value for the contentType dimension.
missingDimensionStrategy(FlavorDimension.contentType.name, PsFlavor.demo.name)
}

packaging {
resources {
excludes.add("/META-INF/{AL2.0,LGPL2.1}")
}
}

buildTypes {
release {
// To publish on the Play store a private signing key is required, but to allow anyone
// who clones the code to sign and run the release variant, use the debug signing key.
// TODO: Abstract the signing configuration to a separate file to avoid hardcoding this.
signingConfig = signingConfigs.getByName("debug")
}
}

namespace = "com.github.andiim.pscatalog"
}

dependencies {
implementation(project(":core:designsystem"))
implementation(project(":core:ui"))
implementation(libs.compose.activity)
}
23 changes: 23 additions & 0 deletions app-ps-catalog/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Plantscan">
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.Plantscan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.github.andiim.pscatalog

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.core.view.WindowCompat
import com.github.andiim.pscatalog.ui.PsCatalog

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent { PsCatalog() }
}
}
Loading