Unlock is the web's new business model
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates (#141) Jul 11, 2018
docker re-ordering docker image to install dependncies less often (#1591) Feb 19, 2019
locksmith Restructures Locksmith for readability and future modification (#1554) Feb 15, 2019
paywall Removed some of the linting warnings (#1590) Feb 19, 2019
scripts Add paywall/ to Travis (#1511) Feb 13, 2019
smart-contracts Adding solium (#1600) Feb 19, 2019
tests Adds integration test for lock creation & embed existence (#1598) Feb 19, 2019
unlock-app Adds integration test for lock creation & embed existence (#1598) Feb 19, 2019
versions Add versions directory and doc (#1414) Feb 5, 2019
wiki @ 85a9ac1 adding github wiki to main repo (#579) Nov 20, 2018
.dockerignore adding .dockerignore for faster builds locally (#1495) Feb 10, 2019
.gitignore Locksmith Deployment (#1192) Jan 28, 2019
.gitmodules adding github wiki to main repo (#579) Nov 20, 2018
.huskyrc.js add paywall directory to pre commit and pre push hooks (#1525) Feb 14, 2019
.travis.yml Add paywall/ to Travis (#1511) Feb 13, 2019
CODE_OF_CONDUCT.md Adding Contributor Covenant CoC (#180) Aug 20, 2018
CONTRIBUTING.md first draft of changes on contributor docs (#1291) Jan 30, 2019
LICENSE Adding MIT License (#108) Jun 7, 2018
PULL_REQUEST_TEMPLATE.md Using HTML comments in PR template (#1524) Feb 14, 2019
README.es.md Update README.md (#276) Oct 3, 2018
README.md Add BrowserStack thank you to README (#1489) Feb 8, 2019
azure-pipelines.yml Set up CI with Azure Pipelines (#1585) Feb 19, 2019
greenkeeper.json Updates greenkeeper configuration (#1510) Feb 12, 2019
mkdocs.yml Initial mkdocs.yml file for documentation (#262) Sep 21, 2018
package-lock.json config for testing and linting react hooks (#1536) Feb 15, 2019
package.json config for testing and linting react hooks (#1536) Feb 15, 2019



This repository includes all the code deployed by Unlock, including smart contracts and the web app running at unlock-protocol.com.

Unlock is an access control protocol built on a blockchain. It enables creators to monetize their content or software without relying on a middleman. It lets consumers manage all of their subscriptions in a consistent way, as well as earn discounts when they share the best content and applications they use.

Read more about why we're building Unlock.

License: MIT Build Status Greenkeeper badge


We recorded a screencast to show how Unlock works for a paywall.

Demo Unlock

You can try Unlock using the Ethereum blockchain on our homepage.

We are building this in the open, which means you can also run the code locally (see instructions below). You can try out the staging version - which runs the latest, in-progress code - at https://staging.unlock-protocol.com. Finally, you can learn more on our documentation wiki.


Thanks for your interest in contributing to Unlock! We're excited you're here. There are a variety of ways to contribute to the project. Please read more about contributing in our contributor guide. Please also check our code of conduct for all participants in our community.

Getting started

  1. Ensure your dev environment is correct

unlock requires node version 8.11.4, and the latest npm in order to build. You can ensure that npm is the latest version with:

$ npm i -g npm

To manage node versions, there are several options. If you are using nvm, note that the default version of npm installed with node version 8.11.4 is outdated, and will result in several node-gyp errors. Upgrading npm will fix these errors.

  1. Check out the code from this repository
git clone https://github.com/unlock-protocol/unlock
cd unlock
  1. Install all deps

This will install all dependencies required for all the Unlock components (smart contracts and react app).

$ npm install
  1. Run the app (this should also compile and deploy the smart contract to a local truffle node)
cd unlock-app && npm run dev

Running tests/ci

We deploy with docker/docker-compose:

docker-compose -f docker/docker-compose.ci.yml build
docker-compose -f docker/docker-compose.ci.yml up --abort-on-container-exit

Thank you

Thank you to BrowserStack for their open source browser testing infrastructure.