An image hosting service on top of the LBRY protocol.
Go to file
2018-04-18 10:50:57 -07:00
config updated mysqlConfig -> MysqlConfig 2018-04-17 14:03:50 -07:00
devConfig fixed conflicts for merging 2018-04-17 12:57:53 -07:00
server finished first pass at updating relative paths 2018-04-17 14:57:45 -07:00
test reorganized file system 2018-03-16 10:34:26 -07:00
.eslintignore separated client and server(node) bundles 2018-03-30 11:44:21 -07:00
.eslintrc added standard-jsx to eslint and fixed issues 2018-02-21 17:02:57 -08:00
.gitignore removed non-sensitive config vars from .gitignore 2018-03-19 16:58:15 -07:00
.sequelizerc updated site config files 2018-03-12 19:26:03 -07:00
index.js fixed request logger relative path 2018-04-18 10:50:57 -07:00
LICENSE create initial LICENSE file 2018-02-05 12:43:14 -08:00
package-lock.json Edited code to be ES6, added eslint and some basic linting configuration 2017-06-17 22:51:30 +02:00
package.json updated version number, renamed to spee.ch-server, rebuilt 2018-04-02 10:20:14 -07:00
README.md Merge branch 'speech-as-a-package' of github.com:lbryio/spee.ch into speech-as-a-package 2018-04-17 14:00:42 -07:00

Spee.ch

This repo packages the spee.ch server for use with spee.ch implementations.

Installation

visit lbryio/www.spee.ch to get started

Development / Structure

  • the server/ folder contains all of the server code
    • index.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 the PORT designated in the config file. This file is the entry point for webpack to build the server bundle.
    • 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 the mysql database. Note: this app uses the sequelize ORM.
  • webpack
    • During the build process, webpack creates a bundle for this project at index.js:

Tests

  • This package uses mocha with chai for testing.
  • To run all tests that do not require LBC, run npm test -- --grep @usesLbc --invert
  • To run all tests, including those that require LBC (like publishing), simply run npm test

API

GET

  • /api/claim/resolve/:name/:claimId
    • example: curl https://spee.ch/api/claim/resolve/doitlive/xyz
  • /api/claim/list/:name
    • example: curl https://spee.ch/api/claim/list/doitlive
  • /api/claim/availability/:name
    • returns the name if it is available
    • example: curl https://spee.ch/api/claim/availability/doitlive
  • /api/channel/availability/:name
    • returns the name if it is available
    • example: curl https://spee.ch/api/channel/availability/@CoolChannel

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 if channelName is provided)

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

The spee.ch stack is MySQL, Express.js, Node.js, React.js. Spee.ch runs lbrynet on its server, and spee.ch uses the lbrynet api to make requests such as publish, create_channel, and get.

spee.ch also runs a sync tool, which decodes the LBRY blocks as they are mined and stores the claims in mysql. It stores all claims in the Claims table, and all channel claims in the Certificates table.