cli | ||
client | ||
client_custom | ||
config | ||
devConfig | ||
public | ||
server | ||
test | ||
utils | ||
.babelrc | ||
.eslintignore | ||
.eslintrc | ||
.gitignore | ||
.npmignore | ||
.sequelizerc | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
server.js | ||
webpack.config.js |
Spee.ch
This repo packages the spee.ch server for use with spee.ch implementations.
Quick start
Install dependencies
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
System dependencies
Spee.ch relies on the following programs being installed on your server:
Development
- the
server/
folder contains all of the server codeindex.js
is the entry point for the server. It creates the express app, requires the routes, syncs the database, and starts the server listening on thePORT
designated in the config file.- the
server/routes
folder contains all of the routes for the express app - the
server/models
folder contains all of the models which the app uses to interact with themysql
database. Note: this app uses the sequelize ORM.
- the
client/
folder contains all of the client code
Tests
- This package uses
mocha
withchai
for testing. - Before running tests, create a
testingConfig.js
file indevConfig/
by copyingtestingConfig.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
- To run all tests, including those that require LBC (like publishing), simply run
API
- (post) /api/claim/publish
- example:
curl -F 'name=MyPictureName' -F 'file=@/path/to/myPicture.jpeg' https://spee.ch/api/claim/publish
- Parameters:
name
(required)file
(required) (must be type .mp4, .jpeg, .jpg, .gif, or .png)nsfw
(optional)license
(optional)title
(optional)description
(optional)thumbnail
url to thumbnail image, for .mp4 uploads only (optional)channelName
(optional)channelPassword
(optional,; required ifchannelName
is provided)
- example:
- (get) /api/claim/resolve/:name/:claimId
- example:
curl https://spee.ch/api/claim/resolve/doitlive/xyz
- example:
- (get) /api/claim/list/:name
- example:
curl https://spee.ch/api/claim/list/doitlive
- example:
- (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
Bugs
If you find a bug or experience a problem, please report your issue here on github and find us in the lbry discord!
Contribute
Below is a guide to the issue tags in this repo
level 1
Issues with spee.ch that anyone with basic web development can handle, little-to-no experience with the spee.ch codebase is required.
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
level 3
Issues with spee.ch strong familiarity with the spee.ch code base and how the lbry daemon functions is required
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
Stack
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