DegenFeed is MIT licensed and open to contributions from the community. Whether you’re fixing a bug, adding a feature, improving documentation, or integrating a new protocol, we’re glad to have you.
npm install -g pnpm)npm install -g wrangler)# Clone the repository
git clone https://git.rugmunch.io/RugMunchMedia/degenfeed-web.git
cd degenfeed-web
# Install all dependencies (monorepo)
pnpm install
# Copy environment configuration
cp .env.example .env
# Edit .env with your configuration
# Start development servers
pnpm devThe pnpm dev command starts both the Next.js frontend and the API worker in development mode. Open http://localhost:3000 in your browser.
Copy .env.example to .env and configure the following:
| Variable | Required | Description |
|---|---|---|
| AUTH_SECRET | Yes | HMAC-SHA256 session signing secret. Generate: openssl rand -hex 32 |
| ALLOWED_ORIGINS | Yes | Comma-separated CORS origins |
| RELAY_URLS | No | Comma-separated Nostr relay URLs |
| FARCASTER_HUB_URL | No | Farcaster Hub HTTP endpoint |
| LENS_API_URL | No | Lens GraphQL API endpoint |
| SOLANA_RPC_URL | No | Solana RPC for wallet verification |
| GTS_CLIENT_ID | No | GotoSocial OAuth2 client ID |
| GTS_CLIENT_SECRET | No | GotoSocial OAuth2 client secret |
| VAPID_PUBLIC_KEY | No | Web Push VAPID public key |
| VAPID_PRIVATE_KEY | No | Web Push VAPID private key |
| POSTMARK_SERVER_TOKEN | No | Postmark API token for emails |
Use descriptive branch names prefixed by category:
| Prefix | Example |
|---|---|
| feat/ | feat/cross-protocol-search |
| fix/ | fix/nostr-reconnect-backoff |
| docs/ | docs/api-rate-limits |
| chore/ | chore/update-dependencies |
| refactor/ | refactor/provider-interface |
| test/ | test/ranking-algorithm-edge-cases |
Follow the Conventional Commits specification:
feat: add cross-protocol search endpoint
fix: handle Nostr relay disconnection gracefully
docs: update API rate limit documentation
refactor: simplify provider interface
test: add ranking algorithm edge case tests
chore: upgrade dependenciesRun these commands before committing to ensure code quality:
# TypeScript type checking
pnpm typecheck
# Linting with Biome
pnpm lint
# Run tests
pnpm test
# All three at once
pnpm typecheck && pnpm lint && pnpm testStrict mode. No implicit any. Prefer types over interfaces for objects.
Biome handles all formatting. No Prettier. No manual formatting debates.
Named exports only. No default exports. Use workspace imports for monorepo packages.
Functional components with hooks. Server components by default in Next.js App Router.
Tailwind CSS with CSS variables for theme. No CSS-in-JS. No inline styles.
Follow existing patterns. Each package has a consistent structure. Read the codebase first.
DegenFeed uses a multi-layer testing strategy. Run the relevant tests for your change.
pnpm testRun during development. Tests individual functions and components in isolation.
pnpm test:e2eFull browser tests. Run before creating a PR for UI changes.
pnpm test:visualScreenshot comparison tests. Run for UI and component changes.
component.tsx → component.test.tsxshould return ranked posts sorted by scoreBranch from main. Use the naming convention above.
Write code, tests, and documentation. Run all pre-commit checks.
Push your branch and create a Pull Request on Forgejo (or GitLab mirror).
Include a clear description of what your PR does, why, and how to test it.
A maintainer will review your PR. They may request changes or clarifications.
Make requested changes. Push additional commits. Keep the conversation constructive.
Your PR will be squash-merged into main. Celebrate your contribution!
DegenFeed supports 10 protocols and is designed for extensibility. See the Protocol Integration Guide for a detailed walkthrough of adding a new provider.
Clone the repo and start coding. We’re excited to see what you build.