Slate Kit is a Kotlin based open-source set of libraries. It is comprised of several projects and modular components that collectively provide pre-built architecture that can be used to build any type of application on the JVM. Slate Kit can also be used as an open-source alternative to FireBase/Parse Beta* as the server-side backend for your mobile / web applications.
Slate Kit can be used to quickly build well structured and scalable architecture and applications for different target groups.
| Startups | Start with a strong base architecture to quickly build high-quality MVPs that can scale |
| SMB | For small to medium sized businesses, build backend applications with pre-built application/service templates/components |
| Mobile | Set up the back-end for your mobile apps. Use Kotlin code for both Android and the Server |
| Personal | Learn Kotlin, functional programming, for self-improvement or side projects |
| Enterprise | There are several components in Slate Kit that can currently be used in the Enterprise, such as the App, Utilities, CLI. However, some of the components, namely APIs, ORMs are better suited for the groups listed above. For more comprehensive support for the enterprise, look into Spring Boot and Vertx.io |
Slate Kit is built for the JVM using 100% Kotlin. There are thin abstractions over some infrastructure services such as Files, queues, docs. Currently, only AWS implementations are available for the infrastructure abstractions. However, in the future, support for Google and Azure cloud services may be implemented. Other services are using directly.
| Item | Infrastructure | Usage | Provider |
| 1 | Files | Abstracted | AWS S3 ( see files ) |
| 2 | Queues | Abstracted | AWS SQS ( see queues ) |
| 3 | Documents | Abstracted | AWS Dynamo ( see docs ) |
| 4 | Entities | Abstracted | Support for MySql ( see orm ) |
| 5 | Http Server | Direct Usage | Ktor ( from JetBrains ) - used as the API server |
| 6 | Http Client | Partially Abstracted | OkHttp ( see HttpRPC ) |
| 7 | Metrics | Partially Abstracted | Micrometer.io ( see tracking ) |
| 8 | Logs | Abstracted | Logback ( see logs ) |
| 9 | SMS | Abstracted | Twilio ( see sms ) |
| 10 | Abstracted | SendGrid ( see email ) | |
| 11 | Alerts | Abstracted | Slack Web Hooks ( see alerts ) |
These are some of the main architecture components available in Slate Kit.
| Component | Visit | About | Description |
![]() |
App | Base Application | A powerful base app with support for command line args, environment selection, configs per environment, logging, life-cycle events, encryption, diagnostics and more |
![]() |
API | Protocol Independent APIs | Easily build protocol independent APIs using simple classes/methods with annotations, that can be hosted / run on both Slate Command Line Shell and/or as Web APIs in the Slate Server |
![]() |
CLI | Command Line Interface | A command line interface shell that you can extend to host your “Protocol Independent APIs” and/or hook into to handle and execute any user commands in a shell. |
![]() |
Jobs | Background Jobs | Backgrounds Jobs / Task Queue library to process one-time, paged, and queue based jobs. |
![]() |
ORM | Domain-Driven ORM | A simple, light-weight, Domain-Driven ORM to map your entities to and from database tables. MySql is currently supported with support for PostGres coming soon. |
![]() |
Server | Web API Server | A Web API server built using Akka Http that can host your “Protocol Independent APIs”. You can extend this server and register your own APIs. |
![]() |
Architecture | Architecture Components | Architectural abstractions and implementations for Files, Queues, Tasks and more. Files and Queues are abstracted with default implementations for AWS S3, SQS. |
![]() |
Utilities | Utility Components | Many useful utility components and code that can be used for any application. All these are located in the Slate.Common project and independent and modular. |
![]() |
Mobile | Mobile / Web Features | Mobile and web features for most applications, such as Users, Devices, Registration, Invites, Settings and more. |
Philosophy, design goals, approaches and standards
| Tech | Built in Kotlin, for the JVM ( multi-platform coming later), and designed to be reusable for both Client ( Android ) and Server (Backend/APIs/Services). |
| Design | Library based approach instead of a "Framework". Broken into several modules so you can pick as little or as much as you want. |
| Standards | Check our coding standards |
| Approach | Simplicity and Practicality above all else |
| Components | Composable, single-purpose components as building blocks. Organized into various projects. |
| Portable | Designed for reasonably low vendor lock-in via a "library" based approach. |
| Minimal | Dependencies on external, 3rd-party libraries are kept to a minimum. Json Simple, OkHttp( for Http client ), Logback( Optional ), Micrometer ( Optional ) |
| License | Apache 2.0 for most components. The API, Jobs component will have a dual Apache 2.0 / AGPL license. |
| Style | Emphasis on immutability
and pragmatic functional programming as much as possible.
However, this is NOT a 100% purely functional code base, and there is NO category theory. |