Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minor changes and fixes #113

Merged
merged 89 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
d4ce510
Merge pull request #63 from JoelKanyi/main
joelkanyi Oct 22, 2023
a3bfd9f
Merge pull request #65 from JoelKanyi/main
joelkanyi Oct 23, 2023
2718707
update all non major dependencies
joelkanyi Oct 31, 2023
c54093c
Merge pull request #68 from JoelKanyi/update_all_non_major_dependencies
joelkanyi Oct 31, 2023
4523a05
linting
joelkanyi Oct 31, 2023
68eeeaa
kotlin 1.9.20
joelkanyi Nov 1, 2023
ee307dc
remove ktlint
joelkanyi Nov 1, 2023
9d99451
update all non-major dependencies
renovate[bot] Nov 5, 2023
ba1ab10
Merge pull request #28 from JoelKanyi/chore/update-libs/all-minor-patch
joelkanyi Nov 6, 2023
95d4b93
update all non-major dependencies from 1.0.0-rc09 to v1.0.0-rc10
renovate[bot] Nov 9, 2023
54771b4
update dependency composeOptions from 1.5.2 to v1.5.4
renovate[bot] Nov 9, 2023
2d08d90
update plugin dependencies from 8.1.2 to v8.1.3
renovate[bot] Nov 9, 2023
c819ccd
Merge pull request #69 from JoelKanyi/chore/update-libs/all-minor-patch
joelkanyi Nov 10, 2023
247a443
Merge pull request #70 from JoelKanyi/chore/update-libs/kotlin-depend…
joelkanyi Nov 10, 2023
e7e046d
Merge pull request #71 from JoelKanyi/chore/update-libs/plugin-depend…
joelkanyi Nov 10, 2023
faa3ca5
update dependency androidx.activity:activity-compose from 1.8.0 to v1…
renovate[bot] Nov 16, 2023
7129cef
update dependency org.jetbrains.kotlinx:kotlinx-serialization-core fr…
renovate[bot] Nov 16, 2023
85d7e26
update plugin dependencies from 8.1.3 to v8.1.4
renovate[bot] Nov 16, 2023
188f017
Merge pull request #72 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Nov 19, 2023
a3055cb
Merge pull request #73 from joelkanyi/chore/update-libs/coroutine-dep…
joelkanyi Nov 19, 2023
4e6b475
Merge pull request #74 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Nov 19, 2023
2cef65a
update all non-major dependencies from 1.1.0 to v1.1.1
renovate[bot] Nov 23, 2023
410508d
Merge pull request #75 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Nov 24, 2023
a6d1643
update all non-major dependencies from 1.5.10 to v1.5.11
renovate[bot] Nov 24, 2023
728cba3
Merge pull request #77 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Nov 25, 2023
c210bae
update kotlin dependencies from 1.9.20 to v1.9.21
renovate[bot] Nov 25, 2023
0b469eb
Merge pull request #76 from joelkanyi/chore/update-libs/kotlin-depend…
joelkanyi Nov 25, 2023
9ff7f4d
update dependency composeOptions from 1.5.4 to v1.5.5
renovate[bot] Nov 30, 2023
6b83e7f
update coroutine dependencies
renovate[bot] Dec 1, 2023
0ab0a13
update all non-major dependencies
renovate[bot] Dec 1, 2023
b77ff42
Merge pull request #78 from joelkanyi/chore/update-libs/kotlin-depend…
joelkanyi Dec 3, 2023
93e61f4
Merge pull request #79 from joelkanyi/chore/update-libs/coroutine-dep…
joelkanyi Dec 3, 2023
011a2c0
Merge pull request #80 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Dec 3, 2023
a01ca63
update plugin dependencies from 8.1.4 to v8.2.0
renovate[bot] Dec 3, 2023
9c8568a
Merge pull request #81 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Dec 3, 2023
80d124f
update dependency composeOptions from 1.5.5 to v1.5.6
renovate[bot] Dec 7, 2023
e33bf57
Merge pull request #83 from joelkanyi/chore/update-libs/kotlin-depend…
joelkanyi Dec 8, 2023
4346f33
update plugin dependencies from 8.2.0 to v8.2.1
renovate[bot] Jan 4, 2024
bcaefc4
Merge pull request #86 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Jan 5, 2024
41ebb07
switch to the new KMP project structure
joelkanyi Jan 11, 2024
2669fbb
cleanup 🧹
joelkanyi Jan 11, 2024
e6e7f00
update actions/setup-java action from v3 to v4
renovate[bot] Jan 11, 2024
e441a11
Merge pull request #82 from joelkanyi/chore/update-libs/actions-setup…
joelkanyi Jan 11, 2024
9546b77
update plugin dependencies from 8.2.1 to v8.2.2
renovate[bot] Jan 25, 2024
277cec7
update all non-major dependencies
renovate[bot] Jan 26, 2024
e52bddc
Merge pull request #87 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Jan 28, 2024
24cf7dd
Merge pull request #88 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Jan 29, 2024
7134387
update gradle/wrapper-validation-action action from v1 to v2
renovate[bot] Feb 1, 2024
1d110bd
update all non-major dependencies
renovate[bot] Feb 2, 2024
3e2f7dc
Merge pull request #90 from joelkanyi/chore/update-libs/gradle-wrappe…
joelkanyi Feb 3, 2024
41ddbf5
Merge pull request #89 from joelkanyi/chore/update-libs/all-minor-patch
joelkanyi Feb 3, 2024
698699a
update kotlin dependencies
renovate[bot] Feb 3, 2024
cbc3a0a
Merge pull request #85 from joelkanyi/chore/update-libs/kotlin-depend…
joelkanyi Feb 4, 2024
4afae9c
update compose version and use `DrawableResource`
joelkanyi Feb 9, 2024
175f4a9
add `copyFontsToAndroidAssets` gradle tasks
joelkanyi Feb 9, 2024
dc550b1
update coroutine dependencies
renovate[bot] Feb 16, 2024
97bcf64
update dependency composeOptions from 1.5.9 to v1.5.10
renovate[bot] Feb 22, 2024
b3563af
update plugin dependencies from 8.2.2 to v8.3.0
renovate[bot] Feb 29, 2024
e620f13
Merge pull request #93 from joelkanyi/chore/update-libs/coroutine-dep…
joelkanyi Mar 2, 2024
318055b
Merge pull request #94 from joelkanyi/chore/update-libs/kotlin-depend…
joelkanyi Mar 2, 2024
cbc035e
Merge pull request #95 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Mar 2, 2024
a078fbc
update plugin dependencies from 8.3.0 to v8.3.1
renovate[bot] Mar 21, 2024
a047a26
Merge pull request #97 from joelkanyi/chore/update-libs/plugin-depend…
joelkanyi Apr 2, 2024
44e6ad1
update dependencies
joelkanyi Apr 20, 2024
190abb8
PREFER_SETTINGS on settings.gradle.kts
joelkanyi Apr 29, 2024
9ee71a7
FAIL_ON_PROJECT_REPOS on settings.gradle.kts
joelkanyi Apr 29, 2024
46a3f58
revert gradle settings
joelkanyi Apr 29, 2024
c71e771
module graph
joelkanyi Apr 29, 2024
2e25c41
use new cmp resources
joelkanyi Apr 30, 2024
a7096c8
Merge pull request #101 from joelkanyi/migrate-to-cmp-resources
joelkanyi Apr 30, 2024
081a0b5
update to kotlin 2.0
joelkanyi May 4, 2024
fb82ddb
update some dependencies
joelkanyi May 4, 2024
3c8eddc
Merge pull request #103 from joelkanyi/kotlin-2.0.0-rc2
joelkanyi May 4, 2024
8ba52c0
remove helpers for voyager navigation
joelkanyi May 15, 2024
734c3e2
update to kotlin 2.0
joelkanyi May 24, 2024
f668bb0
update .gitignore file
joelkanyi Jun 3, 2024
529b119
add desktop launcher icons
joelkanyi Jun 4, 2024
4d03e00
Merge pull request #111 from joelkanyi/desktop-launcher-icons
joelkanyi Jun 4, 2024
bfc7544
save tasks in disk as opposed to in-memory
joelkanyi Jun 4, 2024
5364cc0
Merge pull request #112 from joelkanyi/save-tasks-on-disk
joelkanyi Jun 4, 2024
13082c9
fix spotlessIssue
joelkanyi Jun 4, 2024
ccb8477
create release.yml
joelkanyi Jun 4, 2024
0be8523
update release.yml
joelkanyi Jun 4, 2024
446a23e
update release.yml
joelkanyi Jun 4, 2024
f3d0016
update release.yml
joelkanyi Jun 4, 2024
0dbc499
update release.yml
joelkanyi Jun 4, 2024
9f6fbb6
update release.yml
joelkanyi Jun 4, 2024
a4929d0
update release.yml
joelkanyi Jun 4, 2024
b2bb659
update release.yml
joelkanyi Jun 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/config/configuration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"categories": [
{
"title": "## 🚀 Features",
"labels": [
"feature"
]
},
{
"title": "## 🐛 Fixes",
"labels": [
"fix"
]
},
{
"title": "## 🧪 Tests",
"labels": [
"test"
]
},
{
"title": "## 💬 Other",
"labels": [
"other",
"dependencies"
]
}
]
}
22 changes: 15 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,35 @@ name: Build

on:
push:
branches: [ develop ]
branches: [ develop, main ]
pull_request:
branches: [ main, develop ]

concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true

jobs:

build:
name: 🔨 Build
runs-on: ubuntu-latest
steps:

- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
java-version: 17
java-version: '17'
distribution: 'adopt'
cache: gradle

- name: Make gradle executable
run: chmod +x ./gradlew

- name: Build with gradle
run: ./gradlew build --stacktrace
- name: Build app
run: ./gradlew assemble --stacktrace
144 changes: 144 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: Release

on:
push:
tags:
- '*'

defaults:
run:
shell: bash

jobs:
release_desktop:
name: Release Desktop App
strategy:
fail-fast: false
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
runs-on: ${{ matrix.os }}
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: gradle

- name: Make gradle executable
run: chmod +x ./gradlew

- name: Checkout Gradle Build Cache
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
!~/.gradle/wrapper/dists/**/gradle*.zip
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
gradle-${{ runner.os }}-

- name: Build app
run: ./gradlew :desktop:assemble --stacktrace

- name: Build Release App
run: |
./gradlew packageUberJarForCurrentOS
./gradlew package

- name: Archive Artifacts
uses: actions/upload-artifact@v2
with:
name: distributable-${{ matrix.os }}
if-no-files-found: ignore
path: |
desktop/build/**/*.deb
desktop/build/**/*.msi
desktop/build/**/*.dmg
desktop/build/compose/jars/*.jar

- name: Release
uses: softprops/action-gh-release@91409e712cf565ce9eff10c87a8d1b11b81757ae
with:
prerelease: ${{ contains(github.event.inputs.version, '-rc') || contains(github.event.inputs.version, '-b') || contains(github.event.inputs.version, '-a') }}
files: |
desktop/build/**/*.deb
desktop/build/**/*.msi
desktop/build/**/*.dmg
desktop/build/compose/jars/*.jar
env:
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}

release_android:
name: Release Android App
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: gradle

- name: Make gradle executable
run: chmod +x ./gradlew

- name: Build app
run: ./gradlew :android:assembleRelease --stacktrace

- name: Archive Artifacts
uses: actions/upload-artifact@v2
with:
name: android-app
if-no-files-found: ignore
path: android/build/outputs/apk/release/*.apk

- name: Release
uses: softprops/action-gh-release@91409e712cf565ce9eff10c87a8d1b11b81757ae
with:
prerelease: ${{ contains(github.event.inputs.version, '-rc') || contains(github.event.inputs.version, '-b') || contains(github.event.inputs.version, '-a') }}
files: |
android/build/outputs/apk/release/*.apk
env:
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}

changelog:
name: Changelog
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Build Changelog
id: github_release
uses: mikepenz/release-changelog-builder-action@v1
with:
configuration: ".github/config/configuration.json"
commitMode: true
ignorePreReleases: ${{ !contains(github.ref, '-') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Release
uses: softprops/action-gh-release@91409e712cf565ce9eff10c87a8d1b11b81757ae
with:
body: ${{steps.github_release.outputs.changelog}}
prerelease: ${{ contains(github.event.inputs.version, '-rc') || contains(github.event.inputs.version, '-b') || contains(github.event.inputs.version, '-a') }}
env:
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
106 changes: 99 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,103 @@
*.iml
# Gradle
.gradle
build/

captures

/local.properties
.idea

# IntelliJ .idea folder
.idea/workspace.xml
.idea/misc.xml
.idea/libraries
.idea/caches
.idea/navEditor.xml
.idea/tasks.xml
.idea/modules.xml
.idea/compiler.xml
.idea/jarRepositories.xml
.idea/deploymentTargetDropDown.xml
.idea/androidTestResultsUserPreferences.xml
.idea/appInsightsSettings.xml
.idea/artifacts
gradle.xml
*.iml
.fleet

# General
.DS_Store
/build
*/build
/captures
.externalNativeBuild
.cxx
local.properties

# Do not commit plain-text release keys
app-release.jks
play-account.p12
play-account.json

# Do not commit firebase config
google-services.json

# VS Code config
org.eclipse.buildship.core.prefs
.classpath
.project
bin/

# Docs
site/
.cache/

# Ignore baseline profile files in samples
sample/**/generated

##########################################################################################
# Imported from https://github.com/github/gitignore/blob/main/Swift.gitignore
##########################################################################################

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# fastlane
#
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

report.xml
Preview.html
screenshots/**/*.png
test_output

*.env*

.kotlin
6 changes: 0 additions & 6 deletions .scripts/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,6 @@ else
exit 1
fi

./gradlew app:ktlintCheck --daemon
STATUS=$?

# return 1 exit code if running checks
[ $STATUS -ne 0 ] && exit 1
exit 0

# Branch
branch="$(git rev-parse --abbrev-ref HEAD)"
Expand Down
19 changes: 13 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
<p align="center"><img src="art/app_logo.png" alt="MealTime" height="150px"></p>

# FocusBloom
FocusBloom is a Kotlin Multiplatform app that helps users enhance their productivity and time management skills through focused work intervals and short breaks.

Expand All @@ -12,7 +10,6 @@ FocusBloom is a Kotlin Multiplatform app that helps users enhance their producti
![](https://img.shields.io/badge/Android-black.svg?style=for-the-badge&logo=android) | ![](https://img.shields.io/badge/iOS-black.svg?style=for-the-badge&logo=apple) | ![](https://img.shields.io/badge/Desktop-black.svg?style=for-the-badge&logo=windows) | ![](https://img.shields.io/badge/Web-black.svg?style=for-the-badge&logo=google-chrome)
:----: | :----: | :----: | :----:
✅ | ✅ | ✅ | Planned
<a href='https://play.google.com/store/apps/details?id=com.joelkanyi.focusbloom.android'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height='80px'/></a>

## Screenshots
### Android
Expand All @@ -29,6 +26,18 @@ FocusBloom is a Kotlin Multiplatform app that helps users enhance their producti
## Architecture
The app is shared between Android, iOS and Desktop. The shared code is written in Kotlin and the UI is built with Compose Multiplatform. Shared code, written in Kotlin, is compiled to JVM bytecode for Android and Desktop with Kotlin/JVM and to native binaries for iOS with Kotlin/Native.
### Modules

```mermaid
%%{
init: {
'theme': 'neutral'
}
}%%

graph LR
:desktop --> :shared
:android --> :shared
```
- shared:
- contains all the shared code between the platforms
- android:
Expand All @@ -51,8 +60,6 @@ The app is shared between Android, iOS and Desktop. The shared code is written i
- [Compose Components Resources](https://mvnrepository.com/artifact/org.jetbrains.compose.components/components-resources) - Resources For Compose Multiplatform.
- [Material3 Window Size Multiplatform](https://github.com/chrisbanes/material3-windowsizeclass-multiplatform) - About Material 3 Window Size Class for Compose Multiplatform.
- [Spotless](https://github.com/diffplug/spotless) - A code formatter that helps keep the codebase clean.
- [Detekt](https://github.com/detekt/detekt) - Static code analysis for Kotlin.
- [Ktlint](https://github.com/pinterest/ktlint) - A static code analysis tool and formatter for Kotlin.
- [Github Actions](https://docs.github.com/en/actions) - A CI/CD tool that helps automate workflows.
- [Renovate](https://docs.renovatebot.com/) - An open-source software tool designed to help automate the process of updating dependencies in software projects.

Expand Down Expand Up @@ -85,4 +92,4 @@ Copyright 2023 JoelKanyi
See the License for the specific language governing permissions and
limitations under the License.
```


Loading
Loading