ALREADYME is a multiplatform desktop application which create a README.md
through only a URL of github repository. While generating README.md
, it shows the creation process in real time using WebSockets. Also you can directly download generated README.md
and pull request it to target repository.
If you want to build this project on your local, you only need following:
- Gradle 7.3.3
- JDK >= 16
You can execute this project or create binary file through following commands:
./gradlew run
./gradlew createDistributable
./gradlew runDistributable
gradle run
gradle createDistributable
gradle runDistributable
run
is used to run an app locally. You need to define amainClass
— an fq-name of a class, containing the main function. Note, that run starts a non-packaged JVM application with full runtime. This is faster and easier to debug, than creating a compact binary image with minified runtime. To run a final binary image, userunDistributable
instead.createDistributable
is used to create a prepackaged application image a final application image without creating an installer.runDistributable
is used to run a prepackaged application image.
The following formats available for the supported operating systems:
- macOS —
.dmg
,.pkg
- Windows —
.exe
,.msi
- Linux —
.deb
,.rpm
If you need more help for native distributions and local execution, please check this.
ALREADYME is based on the MVVM
architecture and the Repository
pattern, which follows the Google's official architecture guidance.
The overall architecture of ALREADYME is composed of two layers; the UI layer and the Data layer. Each layer has dedicated components and they have each different responsibilities, as defined below:
- Each layer follows unidirectional event/data flow; the UI layer emits user events to the data layer, and the data layer exposes data as a stream to other layers.
- The data layer is designed to work independently from other layers and must be pure, which means it doesn't have any dependencies on the other layers.
With this loosely coupled architecture, you can increase the reusability of components and scalability of your app.
- 100% Kotlin based.
- Coroutines + Flow for asynchronous.
- Compose Multiplatform for desktop application UI.
- Ktor for HTTP & WebSockets client.
- Dagger for dependency injection.
- Kotlin multiplatform markdown renderer
There may be minor issues with OS other than Windows.
Designed and developed by 2022 YJYOON (Yeojun Yoon)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.