Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

banner

Leptonite - Powered by Boson Protocol

Gitter chat

This is a reference application which demonstrates how to integrate Boson Protocol into a React front-end.

This reference app may be used as a template for building your own marketplace powered by Boson Protocol. Users can connect their wallets and list a set of items as a seller, as well as discover products that can be purchased as a buyer. The application also demonstrates how to the transaction lifecycle can be tracked and co-ordinated by both parties.


Table of Contents:


Design & Architecture

The application architecture is as depicted below. There are various components to this:

  • Frontend
  • Backend (details can be found in the reference-backend repository)
    • Server
    • Database
    • Keepers service - These are cloud functions which run periodically to trigger certain contract methods such as expiry/finalization. Details can be found here.
    • Event Listeners - This listens for blockchain events and updates the backend accordingly. Details can be found here.
  • Smart contracts (details can be found in the contracts repository)

banner


Local Development

Prerequisites

For local development of the reference-frontend, your development machine will need a few tools installed. These will allow you to run the ruby scripts (executed as ./go [args]) to build and test the project.

At a minimum, you'll need:

  • Node (12.20)
  • NPM (> 6)
  • Ruby (2.7)
  • Bundler (> 2)
  • Git
  • Docker
  • direnv
    • This easily allows environment variables to be switched when navigating between project directories (e.g. contracts, reference-backend and reference-frontend). You will be prompted to run direnv allow to enable this.

For instructions on how to get set up with these specific versions:


Build

We have a fully automated local build process to check that your changes are good to be merged. To run the build:

./go

By default, the build process fetches all dependencies, compiles, lints, formats and tests the codebase. There are also tasks for each step. This and subsequent sections provide more details of each of the tasks.

To fetch dependencies:

./go dependencies:install

Run

To run the frontend app connected to a local backend, execute the following commands from the root directory:

  • create a ./.env.local file with the following variables:

    REACT_APP_BACKEND_BASE_URL="<your-backend-url>"
    REACT_APP_FRONT_END_LOCALSTORAGE_VERSION="1.0"
    GENERATE_SOURCEMAP=false
    

    Where is your backend url (for instance http://localhost:3333)

  • Then, run:

    npm install
    npm run start:local

If you need to deploy your own versions of the Boson Protocol contracts and want the frontend to connect them:

  • Run ganache GUI or ganache-cli, setting block mining time to 5 second (to be sure the transactions are not going to be validated immediately)
    ganache-cli --mnemonic "one two three four five six seven eight nine ten eleven twelve" --db boson-local --port 8545 --chainId 1337 --blockTime 5
    
  • deploy the contracts locally through Ganache (see instructions in the contracts repository)
    cd /my-repos/BosonProtocol/contracts
    npm install
    node_modules\.bin\truffle migrate
    
  • note the addresses of the deployed contracts (or keep your window open)
  • update the contract addresses in the file './src/hooks/configs.js':
    export const SMART_CONTRACTS = {
    CashierContractAddress: "0xC6fd7b3464Ffb6F3d9328aA77f836E698742B3ce",
    VoucherKernelContractAddress: "0x7589e53b8a55212Af8b3ad6ef5c31D9c02bFA25F",
    BosonRouterContractAddress: "0x81554F12c4A47bB420D5e5D51F0a8f9837Fe79C3",
    BosonTokenContractAddress: "0x518206d7aaD60874c3b2DCFfd342A2cAD828076C",
    FundLimitsContractAddress: "0xc997BC85206e436bD9e438C5Be04aaa6c679275b",
    };
    
  • Note that you also need to run your own backend, configured to work with these contracts (see instructions in the reference-backend repository)

Test

All tests are written using Jest.

To run the unit tests:

./go tests:unit

Code Linting & Formatting

Both the app itself and the tests are linted and formatted as part of the build process.

For the tests, we use:

To lint the app:

./go app:lint

This will check if the linter is satisfied. If instead you want to attempt to automatically fix any linting issues:

./go app:lint_fix

To check the formatting of the app:

./go app:format

To automatically fix formatting issues:

./go app:format_fix

Similarly, for the tests, to perform the same tasks:

./go tests:lint
./go tests:lint_fix
./go tests:format
./go tests:format_fix

Contributing

We welcome contributions! Until now, Boson Protocol has been largely worked on by a small dedicated team. However, the ultimate goal is for all of the Boson Protocol repositories to be fully owned by the community and contributors. Issues, pull requests, suggestions, and any sort of involvement are more than welcome.

If you have noticed a bug, file an issue. If you have a large pull request, we recommend filing an issue first; small PRs are always welcome.

Questions are also welcome, as long as they are tech related. We can use them to improve our documentation.

All PRs must pass all tests before being merged.

By being in this community, you agree to the Code of Conduct. Take a look at it, if you haven't already.


License

Licensed under LGPL v3.

About

[DEPRECATED] An example front-end application for Boson Protocol

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages