Skip to content

har-nick/BandKit

Repository files navigation

Description
-----------
BandKit is a Kotlin Multiplatform library that models individual API requests with type-safe(ish) data.
Since Bandcamp has no public-facing API (anymore), BandKit was created out of necessity to support development of third-party projects.

Platforms
---------
BandKit is written in pure Kotlin and so it should support any platform supported by JetBrains.
This includes, but is not limited to:
    - JVM
    - Android
    - Native (Desktop)
        > Windows (via MinGW)
        > MacOS
        > Linux
    - Native (Mobile)
        > Android NDK
        > iOS / tvOS / watchOS
    - Web
        > npm
        > WASM

Capabilities
------------
BandKit is currently capable of:
    - Fetching user-related data, including profile information, and followed/following accounts
    - Fetching library data, and exposing stream URLs (MP3 128kb/s)
    - Listing download links for purchased albums in all available codecs
    - Searching functionality, with filters for Albums, Bands, and Tracks

Upcoming features include:
    - Getting artist data, such as discography and location

Potential upcoming features include:
    - Bandcamp Radio support
    - Pagination handling
    - Optional local/persistant caching of aggregated data
    - Recommendations based on genre and location

Downloading
-----------
Maven Central support is upcoming once the library is more complete.
For now, please clone this repository and build manually.

Building KMP libraries via JitPack isn't supported, so publishing there is unplanned for now:
    jitpack/jitpack.io#3853

Usage
------
For detailed usage instructions, see this repository's wiki:
    https://github.com/har-nick/BandKit/wiki

For further pointers, search for comments with "NOTE".

Documentation
-------------
BandKit uses Dokka for documentation. Documentation itself is a work-in-progress.

Contribution
------------
This repository requires much more information before I can consider it stable.

To contribute type-data, search for values typed as `JsonElement`. These are deserialized as strings for now.
To contribute contextual information, search for comments with "MORE INFO NEEDED".

About

A Kotlin Multiplatform library to interface with Bandcamp's API

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages