DripForge is an open-source funding intelligence platform built directly on top of the Drips Protocol v2.
It answers the fundamental sustainability question for open-source software:
"Where is this project's funding coming from, where is it streaming, who is contributing the work, and which upstream dependencies are being supported?"
- 🔗 EVM Wallet Connection: Connect with RainbowKit, Wagmi v2, and Viem across Ethereum Mainnet, Sepolia, Optimism, and Arbitrum.
- 💧 Drips Protocol v2 Event Indexer: Native RPC event decoder and checkpoint manager tracking
StreamsSet,SplitsSet,Given,ReceivedStreams,Split, andOwnerUpdated. - 🏷️ Transparent Data Provenance: Explicit
LIVE,DEMO, andUNAVAILABLEbadges on every metric. Zero silent fallback to mock data in live mode. - 📦 Multi-Ecosystem Dependency Analysis: Manifest extraction for npm (
package.json), Cargo (Cargo.toml), PyPI (pyproject.toml,requirements.txt), and Go (go.mod). - 🌊 Interactive Funding Flow Graph: Multi-tier distribution visualization (Sponsors → Drips Hub → Maintainers & Dependencies → Contributors) built with
@xyflow/react. - 🤖 Algorithmic Split Recommender: Multi-factor advisory engine (50% PRs, 30% commits, 20% issues) with automated bot exclusion and non-binding maintainer advisory status.
- 📊 Deterministic Funding Health Score: Mathematically verified 0–100 score (weights sum strictly to 100%) with explicit experimental badge.
⚠️ Herfindahl-Hirschman Concentration Index: Real-time HHI concentration metrics distinguishing observed on-chain state from recommended splits.- 🔒 Cryptographic GitHub Webhooks:
X-Hub-Signature-256HMAC validation usingtimingSafeEqualwith idempotency logging inwebhook_events. - 🛡️ Production Hardening: Hybrid in-memory/Redis caching with stale-while-revalidate, IP rate limiting (200 req/min), and 3-state Circuit Breakers.
- ⚡ Zero-Setup Local Dev: Embedded WASM PostgreSQL (
@electric-sql/pglite) for instant development without external database dependencies.
DripForge/
├── apps/
│ ├── web/ # Next.js 14 App Router, Tailwind CSS, RainbowKit, XYFlow
│ └── api/ # Express REST API, rate limiter, circuit breakers, cache
├── packages/
│ ├── shared/ # Types, split recommender, health score formula, HHI
│ ├── db/ # Drizzle ORM schema, PGlite / Postgres client, migrations
│ ├── drips/ # Drips v2 event indexer, token normalizer, live provider
│ └── github/ # Multi-manifest parsers, webhook processor, Octokit REST
├── docs/ # System architecture, ADRs, and integration specifications
└── tests/ # Vitest test suite (51 tests) & concurrency load test runner
- Node.js: v18.18+ (Node v20+ recommended)
- pnpm: v9+ (
corepack enable pnpmornpm install -g pnpm)
# 1. Clone the repository
git clone https://github.com/Stephan-Thomas/DripForge.git
cd DripForge
# 2. Install workspace dependencies
pnpm install
# 3. Setup environment variables
cp .env.example .envRun both the API server (http://localhost:3001) and the Next.js web application (http://localhost:3000):
pnpm dev# Run complete test suite (51 tests across 11 test suites)
pnpm test
# Run high-concurrency load benchmark (100 req/sec)
node tests/load/run-load-test.cjspnpm build| Variable | Description | Default / Example |
|---|---|---|
PORT |
API server listen port | 3001 |
DATABASE_URL |
PostgreSQL connection string (PGlite embedded if omitted) | postgresql://... |
DRIPS_DATA_MODE |
Drips provider mode (LIVE or DEMO) |
DEMO |
GITHUB_DATA_MODE |
GitHub provider mode (LIVE or DEMO) |
DEMO |
RPC_URL_SEPOLIA |
Ethereum Sepolia RPC URL for live on-chain indexer | https://sepolia.infura.io/v3/... |
RPC_URL_MAINNET |
Ethereum Mainnet RPC URL | https://mainnet.infura.io/v3/... |
GITHUB_TOKEN |
GitHub Personal Access Token for live repository metadata | ghp_... |
GITHUB_WEBHOOK_SECRET |
Secret key for GitHub webhook HMAC verification | super_secret_webhook_key |
NEXT_PUBLIC_APP_URL |
Web frontend URL | http://localhost:3000 |
NEXT_PUBLIC_API_URL |
Backend API URL | http://localhost:3001 |
MIT © Stephan Thomas & DripForge Contributors