Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
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
32 changes: 21 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ jobs:
working-directory: backend
run: node dist/db/migrate-dry-run.js


backend-tests:
name: Backend Tests
runs-on: ubuntu-latest
Expand Down Expand Up @@ -273,11 +272,12 @@ jobs:
- name: Install frontend dependencies
working-directory: frontend
run: |
if [ -f package-lock.json ]; then
npm ci || npm install
else
npm install
fi
rm -rf node_modules
npm ci --include=optional
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved

- name: Repair oxlint optional binding (fallback)
working-directory: frontend
run: npm i oxlint --include=optional --no-save

- name: Run frontend linter
working-directory: frontend
Expand All @@ -302,11 +302,15 @@ jobs:
# install.
- name: Install dashboard remote dependencies
working-directory: frontend-dashboard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Install wizard remote dependencies
working-directory: frontend-wizard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Run frontend e2e tests
working-directory: frontend
Expand Down Expand Up @@ -367,15 +371,21 @@ jobs:
# docs/module-federation.md) are independent npm projects, each installed separately.
- name: Install host dependencies
working-directory: frontend
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Install dashboard remote dependencies
working-directory: frontend-dashboard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Install wizard remote dependencies
working-directory: frontend-wizard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Typecheck and build dashboard remote
working-directory: frontend-dashboard-remote
Expand Down
15 changes: 8 additions & 7 deletions .github/workflows/e2e-sandbox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,23 +76,24 @@ jobs:
- name: Install frontend dependencies
working-directory: frontend
run: |
if [ -f package-lock.json ]; then
npm ci || npm install
else
npm install
fi
rm -rf node_modules
npm ci --include=optional

# playwright.config.ts's webServer also builds+previews the dashboard/wizard Module
# Federation remotes (see docs/module-federation.md) since the host now lazy-loads them
# instead of bundling them directly -- each is an independent npm project needing its own
# install (mirrors ci.yml's frontend-checks job, which builds the same three apps).
- name: Install dashboard remote dependencies
working-directory: frontend-dashboard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Install wizard remote dependencies
working-directory: frontend-wizard-remote
run: npm ci
run: |
rm -rf node_modules
npm ci --include=optional

- name: Install Playwright browsers
working-directory: frontend
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,21 @@ The frontend is built to call the API on its own origin, and nginx proxies `/api
- [ ] Marketplace integration example (check a counterparty's history before a deal)
- [ ] Rate limiting & spam-commitment protections
- [x] Dashboard endpoint (commitments created/fulfilled over time)
- [x] Discord & Slack commitment tracker bot ([`docs/discord-bot.md`](./docs/discord-bot.md))
- [x] Verifiable reputation export — prove `Trust Score > threshold` in zero knowledge
([`docs/zk-reputation-proofs.md`](./docs/zk-reputation-proofs.md))

### Discord & Slack Notification Bot (`pactum-bot`)

DAOs and organizations can receive real-time updates directly in Discord and Slack when commitments are created, fulfilled, late, breached, or disputed:

```bash
cd backend
npm run pactum-bot
```

See the complete [Discord & Slack Bot Setup Guide](./docs/discord-bot.md) for instructions on inviting the bot to your Discord server or configuring incoming webhooks.

Open an issue if you'd like to pick up any of these — contributions welcome.

### Reputation cache
Expand Down
17 changes: 17 additions & 0 deletions backend/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,20 @@ REPUTATION_CACHE_TTL_SECONDS=60
# Optional: External API Keys for monitoring services
# PINGDOM_API_KEY=your_pingdom_api_key
# UPTIMEROBOT_API_KEY=your_uptimerobot_api_key

# ─── Pactum Discord & Slack Bot Worker Configuration ──────────────────────────
# Discord Bot Token and Channel ID for gateway bot delivery (via discord.js)
# DISCORD_BOT_TOKEN=your_discord_bot_token_here
# DISCORD_CHANNEL_ID=123456789012345678

# Discord Incoming Webhook URL (alternative to full bot token)
# DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/.../...

# Slack Incoming Webhook URL
# SLACK_WEBHOOK_URL=https://hooks.slack.com/services/.../.../...

# Bot Polling Configuration
# BOT_POLL_INTERVAL_MS=5000
# Optional: Set starting ISO timestamp or cursor for bot event polling
# BOT_START_TIME=2026-01-01T00:00:00.000Z

7 changes: 4 additions & 3 deletions backend/examples/load-test-cagg.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* global __ENV */
import http from 'k6/http';
import { check, sleep } from 'k6';

Expand All @@ -7,10 +8,10 @@ import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 5000 }, // Ramp up to 5k users
{ duration: '1m', target: 5000 }, // Sustain 5k users
{ duration: '1m', target: 5000 }, // Sustain 5k users
{ duration: '30s', target: 10000 }, // Ramp up to 10k users
{ duration: '1m', target: 10000 }, // Sustain 10k users
{ duration: '30s', target: 0 }, // Ramp down to 0
{ duration: '1m', target: 10000 }, // Sustain 10k users
{ duration: '30s', target: 0 }, // Ramp down to 0
],
thresholds: {
http_req_duration: ['p(99)<15'], // 99% of requests must complete below 15ms
Expand Down
Loading
Loading