Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thunderbiscuit/cashu-client
https://github.com/thunderbiscuit/cashu-client
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/thunderbiscuit/cashu-client
- Owner: thunderbiscuit
- License: apache-2.0
- Created: 2023-05-12T17:56:59.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-06-29T12:09:11.000Z (6 months ago)
- Last Synced: 2024-10-12T20:35:27.068Z (3 months ago)
- Language: Kotlin
- Homepage: https://thunderbiscuit.github.io/cashu-client/
- Size: 1.26 MB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-cashu - cashu-client
README
# Readme
⚠️ Warning: This library is not ready for production use. ⚠️This is a library I am writing to learn more about the Cashu protocol. It's not meant for production use at the moment.
## Outline
This library is an implementation of the client side of the [Cashu specification] (i.e. it does not include mint software). It is written in Kotlin and is intended to be used in Kotlin Multiplatform projects. The API is still very much in development, and I am open to suggestions; see the [contribute](#contribute) section for more info on where I think I could use the most help. See the [issues] for discussion items and design decisions; issues and PRs are most welcome.The main goals of this library are:
- [ ] 1. Cashu protocol-compliant client side
- [x] NUT-00
- [x] NUT-01
- [x] NUT-02
- [x] NUT-03
- [x] NUT-04
- [x] NUT-05
- [x] NUT-06
- [x] NUT-07
- [ ] NUT-08
- [ ] NUT-09
- [ ] 2. Well tested
- [ ] 3. Well documented
- [ ] 4. Usable in KMP projects (JVM and iOS platforms)The library is not currently available on Maven Central and is certainly not production ready (hence the package name `me.tb`). If it ever grows into more than a personal side-project I would release under a different group ID.
To build locally and deploy to your local Maven repository, see the [build instructions](#build-instructions).
## Build Instructions
To build the library locally and deploy to your local Maven repository, run the following command:
```shell
./gradlew publishToMavenLocal
```The library will be available in your local Maven repository (typically at `~/.m2/repository/` for macOS and Linux systems) under the group ID `me.tb` and the artifact ID `cashuclient`. You can import it in your project as you would any other Maven dependency, provided you have your local Maven repository (`mavenLocal()`) configured as a dependency source:
```kotlin
// root-level settings.gradle.kts
dependencyResolutionManagement {
repositories {
mavenCentral()
mavenLocal()
}
}
``````kotlin
// app-level build.gradle.kts
implementation("me.tb.cashu-client:0.0.1-SNAPSHOT")
```## Contribute
If you are interested in contributing, there are a few areas where I think the codebase could use help with some input in terms of design and implementation:
1. The database, (particularly, the use of the [Exposed] library from JetBrains which I have not worked with before)
2. Mocking the mint for testing using Ktor
3. Dealing with errors when communicating with the mint[Cashu specification]: https://github.com/cashubtc/nuts
[issues]: https://github.com/thunderbiscuit/cashu-client/issues
[Exposed]: https://github.com/JetBrains/Exposed