Skip to content

Lanyards is a dedicated profile for researchers, built on the AT Protocol

License

Notifications You must be signed in to change notification settings

renderghost/lanyards

Repository files navigation

Lanyards 🧑‍🚀

cover image

One link to make your research life easier to share! Papers, talks, affiliations, socials, whatever... Easy, free, decentralised, and built on the AT Protocol.

Note

The complete documentation is available on docs.lanyards.app

Features

  • Account Creation: Sign in with your Bluesky account using OAuth
  • Researcher Profile: Mobile-first profile display with QR code sharing
  • Profile Management: Manage honorifics, location, affiliations, and more
  • Social Networks: Link to Twitter, LinkedIn, ResearchGate, Google Scholar, and Semble
  • Scholarly Contributions: Add research using DOIs
  • Academic Events: Track conference presentations and symposiums

Technology Stack

  • Next.js
  • TypeScript
  • Tailwind CSS
  • AT Protocol (@atproto/*)

Getting Started

1. Install Dependencies

npm install

2. Configure Environment Variables (Optional)

Copy the example environment file:

cp .env.example .env

Edit .env if you need to customize settings:

# Set authentication method (app_password for development, oauth for production)
AUTH_METHOD=app_password

# Application URL
NEXT_PUBLIC_APP_URL=http://localhost:3000

# PDS Configuration (change if using a different PDS)
PDS_URL=https://bsky.social

3. Run the Development Server

npm run dev

4. Sign In

Visit http://localhost:3000 and click "Sign In". Enter your Bluesky handle and app password.

Creating a Bluesky App Password

  1. Go to https://bsky.app/settings/app-passwords
  2. Click "Add App Password"
  3. Give it a name (e.g., "Lanyards")
  4. Copy the generated password and use it to sign in

Authentication

App Password (Recommended for Development)

  • Pros: Simple setup, works immediately, no OAuth configuration needed
  • Cons: Users must create an app password from Bluesky settings
  • Use for: Local development and testing
  • Configuration: Set AUTH_METHOD=app_password in .env

Development Commands

  • npm run build - Generate lexicons and build for production
  • npm run dev - Generate lexicons and start development server
  • npm run format - Format code with Prettier
  • npm run lex:gen - Generate TypeScript types from lexicon schemas
  • npm run lex:watch - Watch lexicon schemas and regenerate types on changes
  • npm run lint:fix - Run ESLint and automatically fix issues
  • npm run lint - Run ESLint
  • npm run start - Start production server

Next Steps

Once authenticated, you can:

  1. View your dashboard at /dashboard
  2. Add affiliations, publications, and events
  3. Configure your profile settings
  4. View your public profile at /{your-handle}

Troubleshooting

Authentication fails

  • Verify your app password is correct (no typos, copied fully)
  • Make sure your Bluesky account is active
  • Check that PDS_URL is set to https://bsky.social (or your PDS URL)
  • Try creating a new app password

Can't access dashboard

  • Make sure you're signed in (check for session cookie)
  • Try clearing cookies and signing in again
  • Check the browser console for errors

Public profiles not loading

  • Check the browser console for errors
  • Ensure the handle is correct (e.g., alice.bsky.social)
  • Verify the user has created a Lanyards profile

Sponsor this project

Contributors 2

  •  
  •