A decentralized naming service built on Archon Protocol. Users can claim @name handles, prove DID ownership, and receive verifiable credentials.
This repository is split into two main folders:
- client/ – A React front-end
- server/ – An Express/Node back-end
- Decentralized Identity – Login with your DID using challenge-response authentication
- Name Registration – Claim your
@namehandle (3-32 characters, alphanumeric + hyphens/underscores) - Verifiable Credentials – Receive credentials proving your name ownership
- Member Directory – Browse registered members and view their DID documents
- IPNS Publication – Registry published to IPFS for decentralized resolution
- OAuth/OIDC – Third-party app integration via standard OAuth 2.0 flows
-
Configure – Copy
server/sample.envtoserver/.envand set:NS_SERVICE_NAME– Unique name for this deployment (used for DID identity)NS_PUBLIC_URL– The canonical public URL (e.g.https://your-domain.example)NS_SESSION_SECRET– A random secret string for sessions
-
Install dependencies:
npm run install
-
Run both client and server:
npm start
-
Visit the site at
http://localhost:3300
The QR code encodes a URL that includes the challenge DID as a query parameter:
https://wallet.archon.technology?challenge=did:cid:...
The wallet URL is specified in the environment variable NS_WALLET_URL.
The API offers two ways to submit a response to the challenge, GET and POST.
The GET method uses a query parameter for the response:
curl https://your-domain.example/api/login?response=did:cid:...
The POST method takes the same parameter in the body:
curl -X POST -H "Content-Type: application/json" -d '{"response":"did:cid:..."}' https://your-domain.example/api/login
Both login methods return a JSON object indicating whether the login was successful:
{ authenticated: [ true | false ] }
See server/sample.env for all available settings including:
NS_SERVICE_NAME– Service identity name (used for DID owner identity)NS_PUBLIC_URL– Canonical public URL for this deploymentNS_SESSION_SECRET– Session secret (change from default!)NS_WALLET_URL– Wallet URL for QR codesNS_GATEKEEPER_URL– Gatekeeper API endpointNS_IPFS_API_URL– IPFS API for registry publicationNS_IPNS_KEY_NAME– IPNS key for publishing
docker compose up --build
Configure via environment variables or a .env file in the project root.
See nginx/name-service.conf.template for a sample nginx reverse proxy config. Use envsubst to fill in your domain:
export DOMAIN=your-domain.example
envsubst '${DOMAIN}' < nginx/name-service.conf.template > /etc/nginx/sites-available/name-service.conf
MIT