mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-service.git
synced 2026-09-21 16:52:03 -07:00
87 lines
3.2 KiB
Markdown
87 lines
3.2 KiB
Markdown
# ipfs-service-provider
|
|||
|
|
|
||
|
|
[](http://standardjs.com) [](https://github.com/semantic-release/semantic-release)
|
||
|
|
|
||
|
|
This is a 'boilerplate' repository. It's intended to be forked to start new projects. This repository has been forked from the [koa-api-boilerplate](https://github.com/christroutner/koa-api-boilerplate). It has all the same features as that boilerplate:
|
||
|
|
|
||
|
|
- [Koa](https://koajs.com/) framework for REST APIs
|
||
|
|
- User management
|
||
|
|
- Access and rate-limit control using [JWT tokens](https://jwt.io/).
|
||
|
|
|
||
|
|
This boilerplate extends that code to provide the basic features required to be a 'service provider' on the [IPFS](https://ipfs.io) network. See [this article](https://troutsblog.com/blog/ipfs-api) if you're new to the concept of service providers on IPFS. These basic features include:
|
||
|
|
|
||
|
|
- [ipfs-coord](https://www.npmjs.com/package/ipfs-coord) for coordinating service providers and consumers across the IPFS network.
|
||
|
|
- JSON RPC for creating an API between providers and consumers.
|
||
|
|
|
||
|
|
If you are interested in creating your own service provider on the IPFS network, fork this repository and start building.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
This project covers basic necessities of most APIs.
|
||
|
|
|
||
|
|
- [Koa](https://koajs.com/) framework for REST APIs
|
||
|
|
- Authentication (passport & jwt)
|
||
|
|
- Database (mongoose)
|
||
|
|
- Testing (mocha)
|
||
|
|
- Doc generation with apidoc
|
||
|
|
- Linting using [Standard](https://github.com/standard/standard)
|
||
|
|
- Packaged for production environment as a Docker container
|
||
|
|
- [ipfs-coord](https://www.npmjs.com/package/ipfs-coord) for coordinating peers over IPFS
|
||
|
|
- JSON RPC for mirroring the REST API over IPFS
|
||
|
|
|
||
|
|
## Requirements
|
||
|
|
|
||
|
|
- node **^14.17.0**
|
||
|
|
- npm **^7.13.0**
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
```bash
|
||
|
|
git clone https://github.com/Permissionless-Software-Foundation/ipfs-service-provider
|
||
|
|
cd ipfs-service-provider
|
||
|
|
npm install
|
||
|
|
npm start
|
||
|
|
```
|
||
|
|
|
||
|
|
## Structure
|
||
|
|
|
||
|
|
The file layout of this repository differs from the koa-api-boilerplate. Instead, it follows the file layout of [Clean Architecture](troutsblog.com/blog/clean-architecture).
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
- `npm start` Start server on live mode
|
||
|
|
- `npm run docs` Generate API documentation
|
||
|
|
- `npm test` Run mocha tests
|
||
|
|
- `docker-compose build` Build a 'production' Docker container
|
||
|
|
- `docker-compose up` Run the docker container
|
||
|
|
|
||
|
|
## Documentation
|
||
|
|
|
||
|
|
API documentation is written inline and generated by [apidoc](http://apidocjs.com/).
|
||
|
|
|
||
|
|
Visit `http://localhost:5000/docs/` to view docs
|
||
|
|
|
||
|
|
## Dependencies
|
||
|
|
|
||
|
|
- [koa2](https://github.com/koajs/koa/tree/v2.x)
|
||
|
|
- [koa-router](https://github.com/alexmingoia/koa-router)
|
||
|
|
- [koa-bodyparser](https://github.com/koajs/bodyparser)
|
||
|
|
- [koa-generic-session](https://github.com/koajs/generic-session)
|
||
|
|
- [koa-logger](https://github.com/koajs/logger)
|
||
|
|
- [MongoDB](http://mongodb.org/)
|
||
|
|
- [Mongoose](http://mongoosejs.com/)
|
||
|
|
- [Passport](http://passportjs.org/)
|
||
|
|
- [Nodemon](http://nodemon.io/)
|
||
|
|
- [Mocha](https://mochajs.org/)
|
||
|
|
- [apidoc](http://apidocjs.com/)
|
||
|
|
- [ESLint](http://eslint.org/)
|
||
|
|
- [ipfs-coord](https://www.npmjs.com/package/ipfs-coord)
|
||
|
|
|
||
|
|
## IPFS
|
||
|
|
|
||
|
|
Snapshots pinned to IPFS will be listed here.
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
[MIT](./LICENSE.md)
|