@bsv/paymail
v2.0.2
Published
BSV Paymail library
Downloads
48
Readme
BSV Paymail
Table of Contents
Objective
The objective of this project is to develop a robust and versatile TypeScript library for Bitcoin SV (BSV) Paymail, aimed at enhancing the integration and functionality of Paymail in the BSV blockchain ecosystem. This library will focus on two primary components:
Server Development: Building a comprehensive server setup that supports service discovery and a variety of capabilities. It will include default functionalities like P2P Destinations, Receive Raw Transaction, Public Profile, and the flexibility for developers to incorporate additional custom capabilities.
Client Implementation: Creating client-side features to facilitate host and capability discovery in both Node.js and browser environments. This will involve developing methods for seamless interaction with the server's provided capabilities.
The project aims to streamline the process of integrating BSV Paymail into various applications, promoting broader adoption and utility within the BSV ecosystem.
Getting Started
npm install
npm install @bsv/paymail
Basic Usage
Paymail Server
import express from 'express'
import { PaymailRouter, PublicKeyInfrastructureRoute, PublicProfileRoute } from '@bsv/paymail'
const app = express()
const baseUrl = 'https://myDomain.com'
const publicProfileRoute = new PublicProfileRoute({
domainLogicHandler: async (name, domain) => {
const user = await fetchUser(name, domain)
return {
name: user.getAlias(),
domain,
avatar: user.getAvatarUrl()
}
}
})
const pkiRoute = new PublicKeyInfrastructureRoute({
domainLogicHandler: async (name, domain) => {
const user = await fetchUser(name, domain)
return {
bsvalias: '1.0',
handle: `${name}@${domain}`,
pubkey: user.getIdentityKey()
}
}
})
const routes = [publicProfileRoute, pkiRoute]
const paymailRouter = new PaymailRouter({ baseUrl, routes })
app.use(paymailRouter.getRouter())
const PORT = 3000
app.listen(PORT, async () => {
console.log(`Server is running on ${baseUrl}:${PORT}`)
})
Paymail Client
import { PaymailClient } from '@bsv/paymail'
const client = new PaymailClient();
(async () => {
const publicProfile = await client.getPublicProfile('[email protected]')
console.log(publicProfile)
})()
For a more detailed tutorial and advanced examples, check our Documentation.
Documentation
The SDK is richly documented with code-level annotations. This should show up well within editors like VSCode. For complete API docs, check out the docs folder
Contribution Guidelines
We're always looking for contributors to help us improve the project. Whether it's bug reports, feature requests, or pull requests - all contributions are welcome.
- Fork & Clone: Fork this repository and clone it to your local machine.
- Set Up: Run
npm install
to install all dependencies. - Make Changes: Create a new branch and make your changes.
- Test: Ensure all tests pass by running
npm test
. - Commit: Commit your changes and push to your fork.
- Pull Request: Open a pull request from your fork to this repository.
For more details, check the contribution guidelines.
For information on past releases, check out the changelog. For future plans, check the roadmap!
Support & Contacts
Project Owners: Thomas Giacomo and Darren Kellenschwiler
Development Team Lead: Brandon Bryant
For questions, bug reports, or feature requests, please open an issue on GitHub or contact us directly.
License
The license for the code in this repository is the Open BSV License. Refer to LICENSE.txt for the license text.
Thank you for being a part of the BSV Blockchain ecosystem. Let's build the future of BSV Blockchain together!