This repository includes all the code deployed by Unlock, including smart contracts and the web app running at unlock-protocol.com.
Unlock is a membership 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.
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, but against the Goerli test network.
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.
Unlock uses a monorepo which includes all the services and applications we develop.
# get the code git clone https://github.com/unlock-protocol/unlock cd unlock
You'll need yarn installed globally.
yarn # install all dependencies (...may take a while)
Build all packages:
To execute commands inside the repo, we use the pattern
yarn workspace <workspace name> <command>
# build the contracts yarn workspace @unlock-protocol/smart-contracts build # validate lint for paywall yarn workspace @unlock-protocol/paywall lint # etc.
You can run a local version of the protocol using Docker.
cd docker && docker-compose up --build
This will create the required infrastructure (database, local ethereum test network, subgraph...) and start core services such as the Locksmith API and a Wedlocks mailing service for debug purposes.
NB: config is defined in both
The following script will deploy the contracts, create some dummy locks and send you some local tokens for development.
cd docker docker-compose exec eth-node yarn provision
The main dashboard lives in the
unlock-app folder of this repo.
To launch it locally:
# install deps yarn # start Unlock main app yarn workspace @unlock-protocol/unlock-app start
This will start
http://localhost:3000/locksto start using the application and deploy locks locally.
http://localhost:3002our static landing page site.
If you run the app locally on your machine, you will have to create a file called
.env.dev.local at the root of the repo, containing variables for the different apps :
# your wallet address to the first line ETHEREUM_ADDRESS=<your ethereum address> # the ETH node READ_ONLY_PROVIDER=http://localhost:8545 # core service URLs LOCKSMITH_URI=http://localhost:8080 WEDLOCKS_URI=http://localhost:1337 # other optional services DASHBOARD_URL=http://localhost:3000 PAYWALL_URL=http://localhost:3001 PAYWALL_SCRIPT_URL=http://localhost:3001/static/paywall.min.js UNLOCK_STATIC_URL=http://localhost:3002 UNLOCK_TICKETS_URL=http://0.0.0.0:3003 # deployment HTTP_PROVIDER_HOST=127.0.0.1 HTTP_PROVIDER_PORT=8545 ERC20_CONTRACT_SYMBOL=DAI ERC20_CONTRACT_ADDRESS=0xFcD4FD1B4F3d5ceDdc19004579A5d7039295DBB9 BOOTSTRAP_AMOUNT=15.0 LOCKSMITH_PURCHASER_ADDRESS=0xe29ec42f0b620b1c9a716f79a02e9dc5a5f5f98a
Make sure you change the value of
ETHEREUM_ADDRESS to use your main Ethereum address (the one you use with your Metamask for example). This will let you interact with the application using your regular setup.
NB: The environments config files for the infrastructure are located inside the
Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers.
Thank you to all the Members of our lock as well! You can easily join this list by clicking on the ❤️ Sponsor button (it's free!) at the top of this page too.