# starfish-server

> Starfish Server

Latest version **0.1.0** (published 2020-10-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install starfish-server
pnpm add starfish-server
yarn add starfish-server
bun add starfish-server
```

Provides the command `starfish`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2020-10-28 |
| First published | 2020-10-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 526.8 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | sobachef@protonmail.com |
| Maintainers | sobachef |

## Links

- npm: https://www.npmjs.com/package/starfish-server
- Homepage: https://starfish.computer
- npm.io page: https://npm.io/package/starfish-server

## Dependencies (6)

- [ejs](https://npm.io/package/ejs.md) ^3.1.5
- [cors](https://npm.io/package/cors.md) ^2.8.5
- [nedb](https://npm.io/package/nedb.md) ^1.8.0
- [express](https://npm.io/package/express.md) ^4.17.1
- [bitcore-lib](https://npm.io/package/bitcore-lib.md) ^8.22.2
- [connect-timeout](https://npm.io/package/connect-timeout.md) ^1.9.0

## Recent versions

- 0.1.0 (latest) — 2020-10-28

## README

# starfish-server

- **starfish** is a decentralized identity management and authentication system powered by Bitcoin. 
- **starfish-server** is an implementation of the Starfish identity scheme, which takes the form of a node.js web server.

> To learn more about the Starfish identity scheme, check out the official documentation at: https://starfish.computer

# How starfish-server works

![workflow](workflow.png)

starfish-server is an implementation of the Starfish scheme that takes the form of a node.js module that runs as a web server at port `21000`.

The web server receives POST requests at its `/sign` endpoint and signs the request message with its embedded wallet and returns the HTTP response.

As of v0.1.0, the response format looks like this:

```
{
  "address": <The Signer Bitcoin Address>,
  "sig": <The Signature>,
  "message": <The message that was requested and signed>,
  "ts": <The unix timestamp at which the signature was made>
}
```

# Using the node module

Install the module in your project:

```
npm install --save starfish-server
```

And then start the server:

```
const starfish = require('starfish-server')
starfishd({
  db: <The Key Path for Starfish>
})
```

It will start a `/sign` endpoint at port `21000`.

If you make a POST request with a "message" attribute, it will sign the message and return the response.

```
<html>
<script>
fetch("http://localhost:21000/sign", {
  method: 'post',
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    message: "Sign this message!"
  })
}).then((res) => {
  return res.json()
}).then((res) => {
  console.log("Respons", res)
})
</script>
</html>
```

# Running as standalone

If you want to run starfish-server as a standalone app instead of a node module, you should first checkout the Starfish app, which wraps the `starfish-server` module in a cross platform app format that supports Mac, Windows, and Linux.

But if you must directly run `starfish-server` without running it as an app format, you can also do that. Just do:

```
npm install -g starfish-server
```

to install globally, and then run

```
starfish 
```

---
_Source: https://npm.io/package/starfish-server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
