{"id":13665648,"url":"https://github.com/district0x/name-bazaar","last_synced_at":"2025-10-11T14:32:37.918Z","repository":{"id":22338804,"uuid":"95976459","full_name":"district0x/name-bazaar","owner":"district0x","description":"A peer-to-peer marketplace for the exchange of names registered via the Ethereum Name Service","archived":false,"fork":false,"pushed_at":"2023-05-01T11:44:14.000Z","size":5841,"stargazers_count":85,"open_issues_count":24,"forks_count":23,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-10-11T14:32:08.899Z","etag":null,"topics":["blockchain","clojurescript","district","ens","ethereum","marketplace"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/district0x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-07-01T16:47:45.000Z","updated_at":"2025-08-01T04:32:54.000Z","dependencies_parsed_at":"2024-01-17T03:17:48.450Z","dependency_job_id":"c9eb3c16-3657-416f-9a7a-2eb423d367a8","html_url":"https://github.com/district0x/name-bazaar","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/district0x/name-bazaar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/district0x%2Fname-bazaar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/district0x%2Fname-bazaar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/district0x%2Fname-bazaar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/district0x%2Fname-bazaar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/district0x","download_url":"https://codeload.github.com/district0x/name-bazaar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/district0x%2Fname-bazaar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007450,"owners_count":26084313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","clojurescript","district","ens","ethereum","marketplace"],"created_at":"2024-08-02T06:00:45.760Z","updated_at":"2025-10-11T14:32:37.887Z","avatar_url":"https://github.com/district0x.png","language":"JavaScript","readme":"\u003cdiv align=\"left\"\u003e\n    \u003ca href=\"https://discord.com/invite/sS2AWYm\"\u003e\u003cimg alt=\"District0x Discord server\" src=\"https://img.shields.io/discord/356854079022039062?label=district0x\u0026logo=discord\"\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"LICENSE\" src=\"https://img.shields.io/github/license/district0x/name-bazaar\"\u003e\u003c/a\u003e\n    \u003ca href=\"http://makeapullrequest.com\"\u003e\u003cimg alt=\"pull requests welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\"\u003e\u003c/a\u003e\n    \u003ca href=\"(https://travis-ci.org/district0x/name-bazaar\"\u003e\u003cimg alt=\"Build Status\" src=\"https://travis-ci.org/district0x/name-bazaar.svg?branch=master\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n# Name Bazaar\n\nA peer-to-peer marketplace for the exchange of names registered via the Ethereum Name Service.\n\nSee at [https://namebazaar.io](https://namebazaar.io)\n\nSmart-contracts can be found [here](https://github.com/district0x/name-bazaar/tree/master/resources/public/contracts/src).\n\n## Starting a dev server\n\nIn a terminal, start a ganache blockchain\n\n```bash\n./run-ganache.sh\n```\n\nNote that this uses docker and will try to pull `trufflesuite/ganache-cli:v6.12.1` image if you don't have it.\n\nAlternatively, you can connect directly to one of ethereum testnet networks - e.g. goerli. In order to do this, specify correct smart contract addresses and `:web3` properties in the `./config.edn` file. Example config file can be found in `docker-builds/server/config.example.edn`.\n\nOpen another terminal, start a repl and build the dev server (with\nfigwheel repl)\n\n```bash\nlein repl\n(start-server!)\n```\n\nFigwheel will prompt for a connection for the repl instance.\n\nOpen another terminal, run the compiled server script, which should\nconnect to the figwheel repl.\n\n```bash\nnode dev-server/name-bazaar.js\n```\n_(If you have problems re-running this command, try removing `dev-server`\nfolder and try to start the server again)_\n\n#### Redeploy smart-contracts and generate mock data\n\nYou can (re)deploy contracts with\n\n```bash\ntruffle migrate --reset\n```\n\nand (optionally) generate some samle dev data from the clojurescript REPL by running the following command:\n\n```clojure\n(generate-data)\n```\n\nRedeployment / generation can take a long time, please be patient.\n\n## Start dev UI\n\nIf you wish to connect to the dev server discussed above, open a\nseparate terminal, and build the client-side ui\n\n```bash\nlein repl\n(start-ui!)\n```\n\nYou can then connect to the server through a web browser at http://localhost:4541\n\n### Semantic UI\n\nTo build the Semantic UI pieces of the app you need to have `gulp` installed.\nNote that `gulp 4.x` does not work, you need a `3.x` version.\n\n`npm install gulp@^3.9.0 --save`\n\nThen use our handy script:\n\n`./semantic.sh build`\nor\n`./semantic.sh watch`\n\nDepending upon how you'd like to work.\n\n## Start a development UI for client-side development only\n\nIf you're only focusing on working with the UI, you can start a UI\ninterface which connects to the production server using mainnet.\n\n```bash\nlein repl\n(start-ui! :ui-only? true)\n```\n\nIn separate terminal, start the supplied docker nginx server\n\n```bash\ndocker-compose build nginx\ndocker-compose up nginx\n\n# Visit website at http://localhost:3001\n```\n\n**Note: using this client is using the main ethereum network, it is\nill-advised to carry out transactions unless you know what you are doing!**\n\n## Backend (server) tests:\n\n```\nlein doo node \"server-tests\"\n```\n_(If you have problems running the tests, try to remove `server-tests` directory\nand try re-running the tests again)_\n\nThe doo runner will autobuild the test and re-run them as the watched files change.\nAlternatively:\n\n```\nlein cljsbuild once server-tests\nnode server-tests/server-tests.js\n```\n\n## Frontend (browser) tests:\n\nTo run browser tests use the following command:\n```\nlein npm run cypress-open\n```\n\nTests connect to a running app on `http://localhost:4541`. It is recommended to run the\ntests with clear ganache network, otherwise the tests will be slower or fail.\n\n## Development env through nginx:\n\n```\ndocker-compose build nginx\ndocker-compose up nginx\n```\n\nand start (start-ui!), (start-server!) as usual, but open the site on http://localhost:3001\n\n## Build for production\n\nFollowing commands are used to build system for production\n\n```bash\nlein build-prod-server\nlein build-prod-ui\nlein build-css\n\n# To build all 3 in parallel use\nlein build-prod\n\n# To run prod server\nnode server/name-bazaar.js\n```\n\n## Testnet deploy\n\nTo run server in docker container use image `district0x/namebazaar-server`, e.g.:\n\n```bash\ndocker run --name=namebazaar-server \\\n    --net=host \\\n    -v /path/to/config.edn:/configs/namebazaar.config.edn \\\n    district0x/namebazaar-server:latest\n```\n\nYou can choose between tags `dev`, `latest` (intended for QA deploys) and `release` (intended for production deploy).  As for the config file, you can find an example in `docker-builds/server/config.example.edn`. Of particular interest is providing correct addresses of smart contracts on the blockchain you'll link the app to.\n\nFor UI use the `district0x/namebazaar-ui` image:\n\n```bash\ndocker run --name=namebazaar-ui \\\n    --net=host \\\n    district0x/namebazaar-ui:latest\n```\n\nNote that there is no passing of config file for UI: currently for any change of UI config you need to build a new image (see the next section). The hardcoded configuration is at `src/name_bazaar/ui/config.cljs`.\n\n### Deploying Name Bazaar smart contracts\n\nFirst, you need to specify deployments secrets in `config.edn`. For example:\n\n```clojure\n{:truffle {:goerli {:privateKeys [\"0x0000...\"]\n                    :infuraKey \"0000....\"\n                    :ensAddress \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n                    :registrarAddress \"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85\"\n                    :publicResolverAddress \"0xE264d5bb84bA3b8061ADC38D3D76e6674aB91852\"\n                    :reverseRegistrarAddress \"0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48\"}}}\n```\n\nENS address are not in documentation, but in some random post on forum https://discuss.ens.domains/t/deployment-of-new-contracts-inc-namewrapper-to-testnet-goerli/14505\n\nThen, you can use `truffle` to deploy the contracts just by running the following command in bash:\n```bash\n# you can also use `--network mainnet` - see truffle-config.js for deployment details for more information.\ntruffle migrate --network goerli\n```\n\n## Linting and formatting smart contracts\n\nWe use [ethlint](https://github.com/duaraghav8/Ethlint) for linting solidity files. You\ncan use `lein npm run ethlint` and `lein npm run ethlint-fix` to run the linter.\n\nYou can use `lein run-slither` to run [slither](https://github.com/crytic/slither) to\nstatically analyze the smart contracts. _However, this tool reports many false positives_.\n","funding_links":[],"categories":["Projects"],"sub_categories":["Marketplace"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdistrict0x%2Fname-bazaar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdistrict0x%2Fname-bazaar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdistrict0x%2Fname-bazaar/lists"}