2018-02-24 03:07:28 +01:00
# Spee.ch
2018-04-17 21:57:53 +02:00
This repo packages the spee.ch server for use with spee.ch implementations.
2017-03-29 19:28:35 +02:00
2018-04-19 00:14:43 +02:00
### Quick start
2018-04-03 00:45:57 +02:00
2018-08-01 01:43:08 +02:00
Install dependencies
2018-04-19 00:14:43 +02:00
```
2018-08-01 01:43:08 +02:00
npm install
```
create config file
```
npm run configure
```
build from source code
```
npm run transpile
```
create client bundle with webpack
```
npm run bundle
```
start the sever
```
npm run start
2018-04-19 00:14:43 +02:00
```
2018-08-01 01:43:08 +02:00
### System dependencies
Spee.ch relies on the following programs being installed on your server:
2018-07-27 21:39:09 +02:00
* [imagemagick ](https://www.imagemagick.org/script/download.php )
* [ffmpeg ](https://www.ffmpeg.org/download.html )
2018-07-27 19:43:43 +02:00
2018-04-19 00:14:43 +02:00
## Development
2018-04-17 21:57:53 +02:00
* the `server/` folder contains all of the server code
2018-04-19 00:14:43 +02:00
* `index.js` is the entry point for the server. It creates the [express app ](https://expressjs.com/ ), requires the routes, syncs the database, and starts the server listening on the `PORT` designated in the config file.
2018-04-17 21:57:53 +02:00
* the `server/routes` folder contains all of the routes for the express app
2018-04-17 22:59:53 +02:00
* the `server/models` folder contains all of the models which the app uses to interact with the `mysql` database. Note: this app uses the [sequelize ](http://docs.sequelizejs.com/ ) ORM.
2018-08-01 01:43:08 +02:00
* the `client/` folder contains all of the client code
2017-03-29 19:28:35 +02:00
2017-12-19 00:23:23 +01:00
## Tests
2018-04-19 00:14:43 +02:00
* This package uses `mocha` with `chai` for testing.
* Before running tests, create a `testingConfig.js` file in `devConfig/` by copying `testingConfig.example.js`
* To run tests:
* To run all tests, including those that require LBC (like publishing), simply run `npm test`
* To run only tests that do not require LBC, run `npm run test:no-lbc`
2017-12-19 00:23:23 +01:00
2017-06-27 00:16:46 +02:00
## API
2018-07-27 19:43:43 +02:00
* _(post)_ /api/claim/publish
2018-03-08 18:34:23 +01:00
* example: `curl -F 'name=MyPictureName' -F 'file=@/path/to/myPicture.jpeg' https://spee.ch/api/claim/publish`
2017-10-06 00:37:20 +02:00
* Parameters:
2018-03-19 23:46:49 +01:00
* `name` (required)
* `file` (required) (must be type .mp4, .jpeg, .jpg, .gif, or .png)
2017-11-03 21:37:23 +01:00
* `nsfw` (optional)
* `license` (optional)
* `title` (optional)
* `description` (optional)
* `thumbnail` url to thumbnail image, for .mp4 uploads only (optional)
* `channelName` (optional)
* `channelPassword` (optional,; required if `channelName` is provided)
2018-07-27 19:43:43 +02:00
* _(get)_ /api/claim/resolve/:name/:claimId
* example: `curl https://spee.ch/api/claim/resolve/doitlive/xyz`
* _(get)_ /api/claim/list/:name
* example: `curl https://spee.ch/api/claim/list/doitlive`
* _(get)_ /api/claim/availability/:name
* returns the name if it is available
* example: `curl https://spee.ch/api/claim/availability/doitlive`
* _(get)_ /api/channel/availability/:name
* returns the name if it is available
* example: `curl https://spee.ch/api/channel/availability/@CoolChannel`
2017-06-27 00:16:46 +02:00
2018-03-08 18:41:22 +01:00
## Bugs
2017-12-22 04:31:39 +01:00
If you find a bug or experience a problem, please report your issue here on github and find us in the lbry discord!
2018-04-03 00:45:57 +02:00
## Contribute
2018-04-17 21:57:53 +02:00
### Below is a guide to the issue tags in this repo
2018-04-17 21:59:43 +02:00
#### level 1
2018-04-17 21:57:53 +02:00
Issues with spee.ch that anyone with basic web development can handle, little-to-no experience with the spee.ch codebase is required.
2018-04-03 00:45:57 +02:00
2018-04-17 21:57:53 +02:00
#### level 2
Issues with spee.ch familiarity with the spee.ch codebase is required, but little-to-no familiarity with the lbry daemon is necessary
2018-04-03 00:45:57 +02:00
2018-04-17 21:57:53 +02:00
#### level 3
Issues with spee.ch strong familiarity with the spee.ch code base and how the lbry daemon functions is required
2018-04-03 00:45:57 +02:00
2018-04-17 21:57:53 +02:00
#### level 4
Issues with lbry (e.g. the spee.ch wallet, lbrynet configuration, etc.) that require strong familiarity with the lbry daemon and/or network to fix. Generally these issues are best suited for the lbry protocol team but are placed in this repo because of they are part of the spee.ch implementation
2018-04-03 00:45:57 +02:00
2018-04-17 21:57:53 +02:00
### Stack
2018-07-27 21:39:09 +02:00
* server
* [mysql ](https://www.mysql.com/ )
* [express ](https://www.npmjs.com/package/express )
* [node ](https://nodejs.org/ )
* [lbry ](https://github.com/lbryio/lbry )
* [imagemagick ](https://www.imagemagick.org/ )
* [ffmpeg ](https://www.ffmpeg.org/ )
* client
* [react ](https://reactjs.org/ )
2018-04-03 00:45:57 +02:00
2018-07-28 03:40:57 +02:00
### URL formats
Below is a list of all possible urls for the content on spee.ch
* controlling, free `LBRY` claim
* spee.ch/claim (show)
* spee.ch/claim.ext (serve)
* specific `LBRY` claim
* spee.ch/claim_id/claim
* spee.ch/claim_id/claim.ext
* all free contents for the controlling `LBRY` channel
* spee.ch/@channel
* a specific `LBRY` channel
* spee.ch/@channel:channel_id
* a specific claim within the controlling `LBRY` channel
* spee.ch/@channel/claim (show)
* spee.ch/@channel/claim.ext (serve)
* a specific claim within a specific `LBRY` channel
* spee.ch/@channel:channel_id/claim
* spee.ch/@channel:channel_id/claim.ext