Skip to content
View yuroyami's full-sized avatar
🎮
Lazing around
🎮
Lazing around
  • More and more Kotlin
  • Algiers, Algeria 🇩🇿

Block or report yuroyami

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
yuroyami/README.md
yuroyami. Kotlin for everything.

Why I write the Kite libraries

Kite is my family of Kotlin Multiplatform libraries. Most of them are one of two kinds. Some rewrite an existing library in Kotlin, like KiteTorrent does with libtorrent. Others put a Kotlin API on top of a native core. KiteFFmpeg does this for FFmpeg, so you call FFmpeg through suspend functions instead of a command line.

Either way, I try to depend on as little as possible, and I aim for zero expect/actual declarations. A Kite library does its own work instead of handing it to a platform library, like ExoPlayer on Android or AVPlayer on iOS. When it needs native code, that code ships inside the library, so there is nothing else to install.

This means that when something breaks, the bug is in the library itself, where I can fix it. It is not hidden in a platform library that I cannot change. And because the same code does the work on every platform, a Kite library behaves the same everywhere.

Now that Compose Multiplatform exists, I see no reason to choose Flutter or React Native. So I want the libraries to fit into Compose apps, and where it makes sense, a library comes with Compose UI. KitePDF has one composable for every document format it opens, and KitePlayer has a Compose video view.

Featured


Synkplay logo

Synkplay

App stars

Watch videos in sync with friends on Android and iOS. Anyone on a computer can join the same room with Syncplay.


KitePDF logo

KitePDF

Library stars

Read, create, edit, and display PDFs, and open EPUB books. It is pure Kotlin, so the same code runs on Android, iOS, desktop, and the web.



KitePlayer logo    KiteFFmpeg logo

KitePlayer + KiteFFmpeg

Library KitePlayer stars KiteFFmpeg stars

KiteFFmpeg adds FFmpeg to your project as one Gradle dependency, with no NDK and nothing to install. Use it to convert, trim, and transcode video and audio. KitePlayer is a media player built on KiteFFmpeg. Its core is 100% Kotlin, so it plays the same on every platform. It supports subtitles, live streams, and hardware decoding.


KiteConfig logo

KiteConfig

Gradle plugin stars

Set your app name, icon, version, and IDs once, in one Gradle block. Android, iOS, and desktop all read from it, so they never drift apart.


Upcoming Kite libraries

These libraries all exist and build, but I have not tested them enough to trust them yet. Each one stays private until it proves that it works, and then it goes public.

Library Purpose
KiteImage Load and save images (PNG, JPEG, GIF, WebP, and more) from shared code.
KiteQR Scan and create QR codes and barcodes.
KiteCore The small helpers every project rewrites: text, lists, dates, math, and coroutines.
KiteArchive Zip and unzip anywhere, plus TAR, gzip, LZ4, and Snappy.
KiteAudio Decode, encode, and tag audio files.
Kite3D 3D math: vectors, matrices, quaternions, and collision shapes.
KiteSynth A synthesizer: it reads a SoundFont, takes MIDI notes, and turns them into sound.
KiteRT Real-time audio output. Your code makes the samples, and KiteRT sends them to the speakers.
KiteMIDI Read and write MIDI files, and talk to real instruments over USB and Bluetooth.
KiteTorrent Download and seed torrents from shared code: magnet links, encryption, peer discovery.

Upcoming apps

These are the apps I am working on now. Each one runs on every platform from a single Kotlin codebase.

App Purpose
PINGETTO Check your network latency with ping.
Luddy One download manager for every screen: torrents and direct links, streamed while they download.
ChatStrata Read the chat backups you download from Facebook, Instagram, Snapchat, and others.
Peerora Send files between your devices.

Email

Pinned Loading

  1. syncplay-mobile syncplay-mobile Public

    📱 Syncplay Mobile (now Synkplay) is a Syncplay client app for Android and iOS. Watch stuff in sync with your friends. Compatible with the official Syncplay for PC. Fully written in Kotlin and Compo…

    Kotlin 362 19

  2. KitePDF KitePDF Public

    100% Kotlin/Native PDF/EPUB Library (read, write, edit, create, render). Full KMP (Android, iOS, Web Wasm/JS, JVM Desktop). No expect/actuals. Supports pure rendering directly to Compose canvas. In…

    Kotlin 43 3

  3. KiteConfig KiteConfig Public

    Gradle plugin that gives you a Kotlin DSL block to configure both your Android and iOS apps at the same time (app name, app logo, app identifier, version, version code, build config, and much more)

    Kotlin 1

  4. KitePlayer KitePlayer Public

    A fully Kotlin/Native media player library for Kotlin Multiplatform, Android, iOS, desktop and web. Fine-tuned to perfection with FFmpeg and Kotlin coroutine-first syntax. No expect/actual, no buil…

    Kotlin 3

  5. KiteFFmpeg KiteFFmpeg Public

    FFmpeg for KMP (Android, iOS, macOS, Linux, Windows, JVM, Wasm). Kotlin-first coroutine-first API with a prebuilt FFmpeg core (one implementation line, nobrainer setup). Demux, decode, filter, enco…

    Kotlin 3

  6. KiteJS KiteJS Public

    Mozilla Rhino ported to pure Kotlin Multiplatform: a JavaScript engine for Android, iOS, JVM and JS

    Kotlin