Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8b8ca73
feat(streaming): implement consolidated superfluid sdk and react hooks
HushLuxe Feb 16, 2026
deeda20
refactor(streaming): optimize sdk initialization and hook logic
HushLuxe Feb 16, 2026
23ae225
refactor(streaming): optimize hook logic and fix type safety
HushLuxe Feb 16, 2026
42091d2
chore: revert frontend and config changes to match main scope
HushLuxe Feb 16, 2026
ead6715
chore: remove accidental files and clean up package.json
HushLuxe Feb 16, 2026
4ef249b
chore: remove all demo-identity-app changes from PR
HushLuxe Feb 16, 2026
aa82b15
chore: include updated yarn.lock for new packages
HushLuxe Feb 16, 2026
5df9d13
chore: use * for internal dependency as requested
HushLuxe Feb 16, 2026
4a09487
refactor(streaming): make token parameter optional with auto-resolution
HushLuxe Feb 17, 2026
0791279
feat(demo): add streaming SDK demo app
HushLuxe Feb 17, 2026
a441adc
edit readme file
HushLuxe Feb 17, 2026
168af8c
chore: update demo readme
HushLuxe Feb 17, 2026
389bc15
chore: remove hardcoded addresses from readme
HushLuxe Feb 17, 2026
bc12016
fix: update security config
HushLuxe Feb 17, 2026
e14148d
docs: simplify readme and cleanup address placeholders
HushLuxe Feb 18, 2026
72427d3
docs: update demo readme
HushLuxe Feb 18, 2026
8ff61e7
docs: use bracketed placeholders for addresses
HushLuxe Feb 18, 2026
f1f3bd4
added gitiLgnore
HushLuxe Feb 18, 2026
76e4bc6
feat: implement multi-token support and update demo app
HushLuxe Feb 19, 2026
9670b4a
feat: implement safe batching and pagination for subgraph queries
HushLuxe Feb 19, 2026
f24af64
feat: sdk polish and defensive guards
HushLuxe Feb 19, 2026
fe10910
Merge remote-tracking branch 'upstream/main' into feat/streaming-sdk
HushLuxe Feb 24, 2026
75d6e37
fix: correct setFlowrate args, align hook params, sync docs
HushLuxe Feb 24, 2026
2165ec9
fix(streaming): align docs/hooks, remove unsupported chain refs
HushLuxe Feb 24, 2026
0f508b5
fix(streaming): align CFA calls, hooks, and demo
HushLuxe Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitleaksignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Gitleaks ignore file
# Used to ignore false positives (like contract addresses flagging as generic API keys)

# Problematic commits containing the G$ contract address in documentation
3d5802f57bbb5e443526e614c36adb878d7cfa70
ec1871fcd04e7fcc098f99cf8befe797b0503339
7a3ce6e98211b40974f26b5e8654c8612ca204e3
2e0353c7c7f5367a86847c21043c7b80a184e9c7
2 changes: 2 additions & 0 deletions apps/demo-streaming-app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Environment variables for demo app
VITE_WALLETCONNECT_PROJECT_ID=your_project_id_here
23 changes: 23 additions & 0 deletions apps/demo-streaming-app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Local environment variables
.env
.env.local
.env.*.local

# Build output
dist
build

# Dependencies
node_modules

# Debug logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# OS files
.DS_Store

# IDE
.vscode/
.idea/
63 changes: 63 additions & 0 deletions apps/demo-streaming-app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# GoodDollar Streaming SDK Demo

A demonstration application showcasing the GoodDollar Superfluid Streaming SDK with the simplified API that automatically resolves G$ token addresses.

## What This Demo Shows

This app demonstrates the key improvement in the Streaming SDK: you no longer need to manually specify G$ token addresses. The SDK automatically resolves the correct token based on your selected environment.

### Before (Old API)
```typescript
await sdk.createStream({
receiver: '<RECEIVER_ADDRESS>',
token: '<TOKEN_ADDRESS>',
flowRate
})
```

### After (New Simplified API)
```typescript
const sdk = new StreamingSDK(publicClient, walletClient, {
environment: 'production' // Auto-resolves G$ token
})

await sdk.createStream({
receiver: '<RECEIVER_ADDRESS>',
// No token parameter needed!
flowRate
})
```

## Features

- **Environment Selector** - Switch between production, staging, and development
- **Wallet Connection** - Connect via WalletConnect to Celo or Base
- **Create Streams** - Create G$ streams with a simple form (no token address needed!)
- **View Active Streams** - See all your incoming and outgoing streams
- **Manage Streams** - Delete streams you've created
- **Visual API Examples** - See the actual code being used in real-time

## Setup

1. **Install Dependencies**
```bash
yarn install
```

2. **Configure Environment**
Create a `.env` file with your WalletConnect Project ID.

3. **Build Dependencies**
```bash
yarn build
```

## Running the Demo

```bash
cd apps/demo-streaming-app
yarn dev
```

Open the URL shown in your terminal to view the app.

35 changes: 35 additions & 0 deletions apps/demo-streaming-app/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
export default [
{
ignores: ["dist/**", "node_modules/**", ".turbo/**"],
},
{
files: ["**/*.{ts,tsx}"],
languageOptions: {
parser: await import("@typescript-eslint/parser"),
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
},
},
plugins: {
"@typescript-eslint": await import("@typescript-eslint/eslint-plugin"),
"react": await import("eslint-plugin-react"),
"react-hooks": await import("eslint-plugin-react-hooks"),
},
rules: {
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"react/react-in-jsx-scope": "off",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
},
settings: {
react: {
version: "detect",
},
},
},
];
13 changes: 13 additions & 0 deletions apps/demo-streaming-app/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>GoodDollar Streaming SDK Demo</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
46 changes: 46 additions & 0 deletions apps/demo-streaming-app/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"name": "demo-streaming-app",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "vite --port 3001",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint .",
"check-types": "tsc --noEmit",
"format": "prettier --write ."
},
"dependencies": {
"@goodsdks/react-hooks": "*",
"@goodsdks/streaming-sdk": "*",
"@reown/appkit": "^1.7.2",
"@reown/appkit-adapter-wagmi": "^1.7.2",
"@repo/eslint-config": "workspace:*",
"@tamagui/config": "^1.125.22",
"@tamagui/core": "^1.125.22",
"@tamagui/font-inter": "^1.125.22",
"@tamagui/vite-plugin": "^1.125.22",
"@tamagui/web": "^1.125.22",
"@tanstack/react-query": "^4.36.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"tamagui": "^1.125.22",
"viem": "^1.21.4",
"wagmi": "^1.4.13"
},
"devDependencies": {
"@tamagui/babel-plugin": "^1.125.22",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"@vitejs/plugin-react": "^4.3.4",
"eslint": "^8.57.1",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.2.0",
"prettier": "^3.5.3",
"typescript": "^5.8.2",
"vite": "6.3.5"
}
}
Loading