From 506eac507f74ec9620f305587c1cbf913d645516 Mon Sep 17 00:00:00 2001 From: Jeremy Kauffman Date: Fri, 30 Nov 2018 11:26:58 -0500 Subject: [PATCH 1/5] proposed readme changes --- README.md | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 009ba6ae..25160d4f 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,15 @@ # Spee.ch -Spee.ch is a [NodeJS](https://nodejs.org) React web app that reads and publishes images and videos to and from the [LBRY](https://lbry.io/) blockchain. +Spee.ch is a [NodeJS](https://nodejs.org) React web app that reads and publishes images, videos and other assets to and from the [LBRY](https://lbry.io/) blockchain. -You can create your own custom version of spee.ch by installing this code base and then creating your own custom components and styles to override the defaults. (More details/guide on how to do that coming soon.) +Succinctly, via spee.ch, you can have a user-friendly, custom-designed image and video hosting site that is backed by a decentralized network. Via just a set of config files, you can spin your entire site back up including assets, with no backing up necessary. -Spee.ch depends on two other lbry technologies: - * [chainquery](https://github.com/lbryio/chainquery) - a normalized database of the blockchain data. We've provided credentials to use a public chainquery service. You can also install it on your own server to avoid being affected by the commons. - * [lbrynet](https://github.com/lbryio/lbry) - a daemon that handles your wallet and transactions. -![App GIF](https://spee.ch/e/speechgif.gif) +## Installation -## Install +### Ubuntu Step-by-Step -### Ubuntu Step by Step -[Ubuntu Install Guide](./docs/ubuntuinstall.md) +[Step-by-step Ubuntu Install Guide](./docs/ubuntuinstall.md) -### Quickstart Overview +### Full Instructions #### Get some information ready: * mysqlusername @@ -21,7 +17,7 @@ Spee.ch depends on two other lbry technologies: * domainname or 'http://localhost' * speechport = 3000 -#### Install and Set Up System Dependencies: +#### Install and Set Up Dependencies * Firewall open ports * 22 * 80 @@ -49,7 +45,7 @@ Spee.ch depends on two other lbry technologies: * _note: even running on http://localhost, you must redirect http or https to port 3000_ -#### Clone a spee.ch repo (choose one) +#### Clone spee.ch * release version for stable production ``` $ git clone -b release https://github.com/lbryio/spee.ch.git @@ -95,8 +91,8 @@ Check out the [customization guide](https://github.com/lbryio/spee.ch/blob/readm #### (optional) add custom components and update the styles - * Create custom components by creating React components in `site/custom/src/` (further instructions coming soon) - * Update the CSS by changing the files in `site/custom/scss` (further instructions and refactor coming soon) + * Create custom components by creating React components in `site/custom/src/` + * Update or override the CSS by changing the files in `site/custom/scss` #### (optional) install your own chainquery Instructions are coming at [lbry-docker] to install your own chainquery instance using docker-compose. This will require 50GB of preferably SSD space and at least 10 minutes to download, possibly much longer. @@ -222,7 +218,8 @@ Spee.ch also runs a sync tool, which decodes blocks from the `LBRY` blockchain a * To run only tests that do not require LBC, run `npm run test:no-lbc` ### URL formats -Spee.ch has a few types of URL formats that return different assets from the LBRY network. Below is a list of all possible URLs for the content on spee.ch +Spee.ch has a few types of URL formats that return different assets from the LBRY network. Below is a list of all possible URLs for the content on spee.ch. You can learn more about LBRY URLs [here](https://lbry.tech/resources/uri). + * retrieve the controlling `LBRY` claim: * https://spee.ch/`claim` * https://spee.ch/`claim`.`ext` (serve) @@ -240,22 +237,17 @@ Spee.ch has a few types of URL formats that return different assets from the LBR * https://spee.ch/`@channel`:`channel_id`/`claim` * https://spee.ch/`@channel`:`channel_id`/`claim`.`ext` (serve) +### Dependencies + +Spee.ch depends on two other lbry technologies: + * [chainquery](https://github.com/lbryio/chainquery) - a normalized database of the blockchain data. We've provided credentials to use a public chainquery service. You can also install it on your own server to avoid being affected by the commons. + * [lbrynet](https://github.com/lbryio/lbry) - a daemon that handles your wallet and transactions. +![App GIF](https://spee.ch/e/speechgif.gif) + + ### Bugs If you find a bug or experience a problem, please report your issue here on GitHub and find us in the lbry discord! -### Issue tags in this repo -#### level 1 -Issues that anyone with basic web development can handle; little-to-no experience with the spee.ch codebase is required. - -#### level 2 -Familiarity with web apps is required, but little-to-no familiarity with the lbry daemon is necessary - -#### level 3 -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 reported in this repo because they are part of the spee.ch implementation - ## License This project is MIT licensed. For the full license, see [LICENSE](LICENSE). -- 2.45.3 From 7288b1f5410bc6adbe1f8b2e90f90c149ea4689e Mon Sep 17 00:00:00 2001 From: Shawn Date: Mon, 3 Dec 2018 15:32:57 -0600 Subject: [PATCH 2/5] Fix SCSS overrides for site/custom --- client/scss/all.scss | 80 ++++++++++++++++++------------------ utils/createModuleAliases.js | 15 +------ webpack.config.js | 4 ++ 3 files changed, 45 insertions(+), 54 deletions(-) diff --git a/client/scss/all.scss b/client/scss/all.scss index c61e42bd..07601eb5 100644 --- a/client/scss/all.scss +++ b/client/scss/all.scss @@ -1,44 +1,44 @@ -@import '_variables'; -@import '_reset'; -@import 'font/_font.scss'; -@import '_html'; -@import '_body'; -@import '_react-app'; -@import '_text'; +@import '~scss/_variables'; +@import '~scss/_reset'; +@import '~scss/font/_font.scss'; +@import '~scss/_html'; +@import '~scss/_body'; +@import '~scss/_react-app'; +@import '~scss/_text'; -@import '_link'; -@import '_input'; -@import '_select'; -@import '_textarea'; -@import '_video'; -@import '_form'; +@import '~scss/_link'; +@import '~scss/_input'; +@import '~scss/_select'; +@import '~scss/_textarea'; +@import '~scss/_video'; +@import '~scss/_form'; -@import '_asset-display'; -@import '_asset-preview'; -@import '_button'; -@import '_button-primary'; -@import '_button-secondary'; -@import '_click-to-copy'; -@import '_form-feedback'; -@import '_horizontal-split'; -@import '_label'; -@import '_nav-bar'; -@import '_page-layout'; -@import '_page-layout-show-lite'; -@import '_page-content'; -@import '_progress-bar'; -@import '_publish-preview'; -@import '_share-buttons'; -@import '_space-between'; -@import '_space-around'; -@import '_row'; -@import '_tooltip'; -@import '_social-share-link'; +@import '~scss/_asset-display'; +@import '~scss/_asset-preview'; +@import '~scss/_button'; +@import '~scss/_button-primary'; +@import '~scss/_button-secondary'; +@import '~scss/_click-to-copy'; +@import '~scss/_form-feedback'; +@import '~scss/_horizontal-split'; +@import '~scss/_label'; +@import '~scss/_nav-bar'; +@import '~scss/_page-layout'; +@import '~scss/_page-layout-show-lite'; +@import '~scss/_page-content'; +@import '~scss/_progress-bar'; +@import '~scss/_publish-preview'; +@import '~scss/_share-buttons'; +@import '~scss/_space-between'; +@import '~scss/_space-around'; +@import '~scss/_row'; +@import '~scss/_tooltip'; +@import '~scss/_social-share-link'; -@import '_channel-claims-display'; -@import '_dropzone'; -@import '_publish-url-input'; -@import '_publish-status'; -@import '_publish-disabled-message'; +@import '~scss/_channel-claims-display'; +@import '~scss/_dropzone'; +@import '~scss/_publish-url-input'; +@import '~scss/_publish-status'; +@import '~scss/_publish-disabled-message'; -@import '_media-queries'; +@import '~scss/_media-queries'; diff --git a/utils/createModuleAliases.js b/utils/createModuleAliases.js index c77802e4..b9129f47 100644 --- a/utils/createModuleAliases.js +++ b/utils/createModuleAliases.js @@ -2,6 +2,7 @@ const { statSync, existsSync, readdirSync } = require('fs'); const { join, resolve } = require('path'); const DEFAULT_ROOT = 'client/build'; const CUSTOM_ROOT = 'site/custom/build'; +const DEFAULT_SCSS_ROOT = 'client/scss'; const CUSTOM_SCSS_ROOT = 'site/custom/scss'; const getFolders = path => { @@ -23,17 +24,6 @@ const addAliasesForCustomComponentFolder = (name, aliasObject) => { return aliasObject; }; -const addAlliasesForSCSS = (aliasObject) => { // scss - // creates an alias for every folder found in the custom scss folder - const customScssRoot = resolve(`${CUSTOM_SCSS_ROOT}`); - const customFolders = getFolders(customScssRoot); - for (let i = 0; i < customFolders.length; i++) { - let folderName = customFolders[i]; - aliasObject[folderName] = resolve(`${CUSTOM_SCSS_ROOT}/${folderName}`); - } - return aliasObject; -}; - module.exports = () => { let moduleAliases = {}; @@ -58,9 +48,6 @@ module.exports = () => { moduleAliases['@sagas'] = resolve(`${DEFAULT_ROOT}/sagas`); moduleAliases['@app'] = resolve(`${DEFAULT_ROOT}/app.js`); - // scss aliases - moduleAliases = addAlliasesForSCSS(moduleAliases); - // return finished aliases return moduleAliases; }; diff --git a/webpack.config.js b/webpack.config.js index 1512a4d5..5672721f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,6 +2,8 @@ const Path = require('path'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const createModuleAliases = require('./utils/createModuleAliases.js'); const SCSS_ROOT = Path.join(__dirname, 'client/scss/'); +const CLIENT_ROOT = Path.join(__dirname, 'client/'); +const CUSTOM_CLIENT_ROOT = Path.join(__dirname, 'site/custom/'); const customAliases = createModuleAliases(); @@ -38,6 +40,8 @@ module.exports = { }, resolve: { modules: [ + CUSTOM_CLIENT_ROOT, + CLIENT_ROOT, SCSS_ROOT, 'node_modules', __dirname, -- 2.45.3 From 82c6b966e4131325eca3cfe7f5a29c1e170c4837 Mon Sep 17 00:00:00 2001 From: Jeremy Kauffman Date: Tue, 4 Dec 2018 11:35:59 -0500 Subject: [PATCH 3/5] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 25160d4f..9f203a2b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ # Spee.ch -Spee.ch is a [NodeJS](https://nodejs.org) React web app that reads and publishes images, videos and other assets to and from the [LBRY](https://lbry.io/) blockchain. -Succinctly, via spee.ch, you can have a user-friendly, custom-designed image and video hosting site that is backed by a decentralized network. Via just a set of config files, you can spin your entire site back up including assets, with no backing up necessary. +spee.ch provides a user-friendly, custom-designed, image and video hosting site backed by a decentralized network and +blockchain ([LBRY](https://lbry.tech/)). Via just a small set of config files, you can spin your an entire spee.ch site back up including assets. + +For a completely open, unrestricted example of a spee.ch site, check out https://www.spee.ch. + +For a closed, custom-hosted and branded example, check out https://lbry.theantimedia.com/. ## Installation -- 2.45.3 From 959c06746d6302a9181ad1c3b857ebb4b7cd4a45 Mon Sep 17 00:00:00 2001 From: Jeremy Kauffman Date: Tue, 4 Dec 2018 11:38:48 -0500 Subject: [PATCH 4/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f203a2b..2e505ab2 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ spee.ch provides a user-friendly, custom-designed, image and video hosting site backed by a decentralized network and blockchain ([LBRY](https://lbry.tech/)). Via just a small set of config files, you can spin your an entire spee.ch site back up including assets. +![App GIF](https://spee.ch/e/speechgif.gif) + For a completely open, unrestricted example of a spee.ch site, check out https://www.spee.ch. For a closed, custom-hosted and branded example, check out https://lbry.theantimedia.com/. @@ -246,8 +248,6 @@ Spee.ch has a few types of URL formats that return different assets from the LBR Spee.ch depends on two other lbry technologies: * [chainquery](https://github.com/lbryio/chainquery) - a normalized database of the blockchain data. We've provided credentials to use a public chainquery service. You can also install it on your own server to avoid being affected by the commons. * [lbrynet](https://github.com/lbryio/lbry) - a daemon that handles your wallet and transactions. -![App GIF](https://spee.ch/e/speechgif.gif) - ### Bugs If you find a bug or experience a problem, please report your issue here on GitHub and find us in the lbry discord! -- 2.45.3 From 204686b690048d5821c82be0f9c068196b166550 Mon Sep 17 00:00:00 2001 From: jessop Date: Tue, 4 Dec 2018 12:43:37 -0500 Subject: [PATCH 5/5] checks bidstate on top-free claimnames --- server/chainquery/bundle.js | 5 ++--- server/chainquery/queries/claimQueries.js | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/server/chainquery/bundle.js b/server/chainquery/bundle.js index 4a96169b..a859bd5d 100644 --- a/server/chainquery/bundle.js +++ b/server/chainquery/bundle.js @@ -873,8 +873,7 @@ var claimQueries = (db, table, sequelize) => ({ logger$1.debug(`claim.getAllChannelClaims for ${channelClaimId}`); const defaultWhereClauses = { - bid_state: - { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } + bid_state: { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } }; const addWhereClauses = (whereClauses, params) => { @@ -969,7 +968,7 @@ var claimQueries = (db, table, sequelize) => ({ getTopFreeClaimIdByClaimName: async (name) => { return await table.findAll({ // TODO: Limit 1 - where: { name }, + where: { name, bid_state: { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } }, order: [['effective_amount', 'DESC'], ['height', 'ASC']], }).then(result => { if(result.length === 0) { diff --git a/server/chainquery/queries/claimQueries.js b/server/chainquery/queries/claimQueries.js index cf4b532b..521cda04 100644 --- a/server/chainquery/queries/claimQueries.js +++ b/server/chainquery/queries/claimQueries.js @@ -72,8 +72,7 @@ export default (db, table, sequelize) => ({ logger.debug(`claim.getAllChannelClaims for ${channelClaimId}`); const defaultWhereClauses = { - bid_state: - { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } + bid_state: { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } }; const addWhereClauses = (whereClauses, params) => { @@ -168,7 +167,7 @@ export default (db, table, sequelize) => ({ getTopFreeClaimIdByClaimName: async (name) => { return await table.findAll({ // TODO: Limit 1 - where: { name }, + where: { name, bid_state: { [sequelize.Op.or]: ['Controlling', 'Active', 'Accepted'] } }, order: [['effective_amount', 'DESC'], ['height', 'ASC']], }).then(result => { if(result.length === 0) { -- 2.45.3