/kiit

Kotlin Framework for Apps, APIs, CLIs, Jobs, Mobile and more...

Primary LanguageKotlinApache License 2.0Apache-2.0

WebSite Kotlin Apache 2 Follow us on twitter

❓ Kiit

Kiit ( Formerly Slate Kit ) is a modular Kotlin framework to build Server and Android apps.

🗒️ Details

Kiit is a Kotlin framework, designed to be a simple, light-weight, modular set of libraries and tools to build Apps, APIs, CLIs, Jobs, Mobile Apps. It is targetd for Start-ups, Personal projects, Mobile Apps, and SMBs ( small-medium sized businesses ). These libraries can be used for both Server and Android and there are modules for the server that abstract infrastructure ( Queues, Files, SMS, Emails, Alerts ) with integrations for AWS ( SQS, S3 ), Twilio ( SMS ), SendGrid ( Email ), Slack ( Alerts ) and more. Multi-platform support is planned as a future state.

image

✨ Goals

num type link
1 Simple Easy to use, light, modular, 100% Kotlin (alternative to Spring Framework)
2 Projects More than just for APIs, use it for Console apps, Jobs, CLIs.
3 Usage Start-Ups, Personal, Mobile Apps, SMB (small-mid sized business)
4 Full-Stack Usable on both Server and Android ( due to being simple/light-weight)
5 Multiplatform Kotlin Multi-Platform planned for the future for Javascript, Native, iOS, etc
6 Modular Designed as a set of libraries rather than a typical "framework"
7 Tools CLI tools to quickly create new Apps, CLIs, API, Jobs projects
8 Cloud Partial Cloud Provider abstractions for ( Queues, Files, Databases, etc )
9 Defaults Sensible default implementations, currently support AWS

🏁 Start

You can quickly get started on Mac OS using the Homebrew installer and create projects using the Kiit CLI. Refer to https://www.slatekit.com/start/generators/ for more info.

brew tap slatekit/kiit

# NOTE: Install may take a long time on Mac (Catalina) due to issues noted below
brew install kiit

kiit new app -name="MyApp1" -package="company1.apps"
kiit new api -name="MyAPI1" -package="company1.apis"
kiit new job -name="MyJob1" -package="company1.jobs"
kiit new env -name="MyApp2" -package="company1.apps"
kiit new cli -name="MyCLI1" -package="company1.apps"

Notes

  1. Slow HomeBrew post install
  2. The install may be very slow with MacOS Catalina
  3. Ensure security -> privacy -> full disk access -> iterm2 ( of what ever terminal you use )

🏁 Install

You can set up gradle using the example below. You can use as few or as many slatekit modules as you need. See https://github.com/orgs/slatekit/packages?repo_name=slatekit for latest versions

repositories {
    jcenter()
    mavenCentral()
    maven {
        url "https://maven.pkg.github.com/slatekit/kiit"
	// Your GitHub user name + personal access token
        credentials {
            username = System.getenv('GITHUB_PACKAGES_INSTALL_ACTOR')
            password = System.getenv('GITHUB_PACKAGES_INSTALL_TOKEN')
        }
    }
}

dependencies {
	// Use the results module: Result<T,E> to model successes/failures with optional status codes
    	compile 'dev.kiit:kiit-results:2.12.0'
	// ... Other packages here 
}

📌 Links

Some important links / pages for more info.

num type link
1 website www.kiit.dev
2 start www.kiit.dev/start
3 modules https://www.kiit.dev/arch/overview/
4 releases https://github.com/slatekit/kiit/releases
5 packages https://github.com/orgs/slatekit/packages?repo_name=kit
6 issues https://github.com/slatekit/kiit/issues
7 discuss https://github.com/slatekit/kiit/discussions
8 license http://www.kiit.dev/more/license
9 utilities http://www.kiit.dev/utils/overview
10 standards http://www.kiit.dev/more/standards

🧰 Tools

These are the vendors and tools we currently use to build and maintain Kiit

Name Type Notes
intellij IDE Kotlin/Java IDE. Every aspect of IntelliJ IDEA has been designed to maximize developer productivity. Together, intelligent coding assistance and ergonomic design make development not only productive but also enjoyable.
your kit Profiler YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler
ktor HTTP Server Ktor is an asynchronous framework for creating microservices, web applications, and more. It’s fun, free, and open source.

⚙️ Modules

Kiit contains many useful architecture components, utilities and applications features. Many of the modules are organized into logical groups and the entire design can be visualized in this diagram

image

Here are some of the main ones:

docs source desc
Foundations -- Used by most modules
results src Modeling of Successes/Failures
common src Utility Components
context src Stores Common Dependencies
actors src Micro Actor Library
Apps -- Runnable apps/Services
app src Runnable App Template
cli src Command Line Interface
apis src RPC-like Web APIs
jobs src Pausable jobs on persistent queues
Infrastructure -- Infrastructure components
core src Infrastructure Abstractions(Files, Queues)
cache src Caching library
notifications src Email, SMS, Slack, Push
Data -- Database modules
db src Easy database operations over JDBC
data src Repository pattern for data persistence
entities src Light-weight Data-Mapper for models
Providers -- 3rd Party Integrations
aws src AWS S3, SQS provider files/queues
logback src Logback logging provider
datadog src DataDog metrics provider

⁉️ Upcoming

  1. Kotlin Flow integration where applicable
  2. Use of newer Kotlin features
  3. Kotlin Multi-Platform
  4. Improved templates, Code Generators
  5. OpenAPI integrations

✉️ Contact

❤️ Like Us ?

  • Support Kiit by clicking the ⭐ button on the upper right of this page. ✌️
  • Contribute to continued development via Sponsorship ( being set up soon )