Skip to content

Feat/add sol - #370

Open
0xfaan wants to merge 3 commits into
kellymusk:mainfrom
0xfaan:feat/add-sol
Open

Feat/add sol#370
0xfaan wants to merge 3 commits into
kellymusk:mainfrom
0xfaan:feat/add-sol

Conversation

@0xfaan

@0xfaan 0xfaan commented Jul 28, 2026

Copy link
Copy Markdown

Summary

 2   
 3   <!-- One or two sentences explaining what this PR does and why. -->
 4   
 5   Closes #<!-- issue number -->
 6   
 7   ---
 8   
 9   ## Type of Change
10   
11   <!-- Check all that apply -->
12   
13   - [ ] 🐛 Bug fix (non-breaking change that fixes an issue)
14   - [ ] 🚀 New feature (non-breaking change that adds functionality)
15   - [ ] 💥 Breaking change (fix or feature that would cause existing behaviour to change)
16   - [ ] ♻️ Refactor (no functional change, code quality improvement)
17   - [ ] 🎨 UI / design update
18   - [ ] 📦 Dependency update
19   - [ ] 🔧 Configuration / tooling change
20   - [ ] 📝 Documentation update
21   - [ ] 🔒 Security fix
22   
23   ---
24   
25   ## Changes Made
26   
27   <!-- Bullet-point list of concrete changes in this PR. -->
28   
29   - 
30   - 
31   - 
32   
33   ---
34   
35   ## Testing
36   
37   <!-- Describe what you tested and how. -->
38   
39   - [ ] Manual testing in local development (`npm run dev`)
40   - [ ] Unit tests added or updated (`npm test`)
41   - [ ] Existing tests still pass (`npm test`)
42   - [ ] Tested on Stellar **Testnet** (if blockchain changes are included)
43   - [ ] Tested with demo mode OFF (`NEXT_PUBLIC_DEMO_MODE=false`)
44   - [ ] Verified on mobile viewport (if UI changes are included)
45   
46   **Test steps for reviewers:**
47   
48   1. 
49   2. 
50   3. 
51   
52   ---
53   
54   ## Screenshots / Screen Recording
55   
56   <!-- For UI changes, paste before/after screenshots or a short recording.
57        Drag and drop images directly into this text box. -->
58   
59   | Before | After |
60   |--------|-------|
61   |        |       |
62   
63   ---
64   
65   ## Checklist
66   
67   <!-- All boxes must be checked before requesting review. -->
68   
69   ### Code Quality
70   - [ ] Code follows the project's style and conventions (ESLint passes: `npm run lint`)
71   - [ ] TypeScript types are correct (no new `any` without justification): `npm run type-check`
72   - [ ] No secrets, wallet keys, or PII committed to the repository
73   - [ ] New `NEXT_PUBLIC_*` variables added to `.env.example` (if applicable)
74   
75   ### Observability
76   - [ ] New API routes use `captureError` / `log` from `lib/observability`
77   - [ ] New Stellar SDK calls are wrapped in try/catch forwarding to `captureError`
78   - [ ] No sensitive data (private keys, mnemonics, tokens) passed to `log.*` or `captureError`
79   
80   ### Security
81   - [ ] User inputs are validated with Zod (or equivalent) before processing
82   - [ ] No new server-side secrets are exposed via `NEXT_PUBLIC_*` variables
83   - [ ] Webhook signatures are verified where applicable
84   - [ ] Rate limiting applied to new public API endpoints (Upstash)
85   
86   ### Accessibility (UI changes only)
87   - [ ] Interactive elements have accessible labels (`aria-label`, `aria-describedby`)
88   - [ ] Colour contrast meets WCAG AA (4.5:1 for normal text)
89   - [ ] Keyboard navigation works for new interactive components
90   
91   ### Documentation
92   - [ ] Inline code comments added for non-obvious logic
93   - [ ] README or docs updated if the change affects setup or configuration
94   - [ ] `SECURITY.md` updated if the change affects the security surface (rare)
95   
96   ---
97   
98   ## Deployment Notes
99   

100
102
103 -
104
105 ---
106
107 ## Related Issues / PRs
108
109
110
111 -

Closes #280

Closes #282

Closes #281

0xfaan added 3 commits July 28, 2026 23:11
…gestion

- Add lib/observability.ts with AxiomLogger, captureError, identifyUser,
  addBreadcrumb, and withRouteObservability HOF
- Configure sentry.client.config.ts with session replay, noise filters,
  and wallet-address redaction in breadcrumbs
- Configure sentry.server.config.ts with secret-key redaction in extras
- Configure sentry.edge.config.ts for low-overhead edge sampling
- Wire Sentry into Next.js via instrumentation.ts and next.config.mjs
- Wrap stellar-p2p, stellar-swap, stellar-offramp SDK calls with
  structured try/catch forwarding to Sentry + Axiom
- Add captureError + log to all API route handlers:
  onramp/create-order, offramp/create-order, bills/initiate,
  payments/mobile-money/initiate, withdrawals, exchange-rate,
  rates, kyc/initiate

Closes kellymusk#1
Documents every environment variable used by the application:
- App / Next.js base URLs and demo mode flag
- Stellar network settings (network, Horizon URL)
- All stablecoin issuer addresses (cNGN, cKES, cGHS, cZAR, cUGX, USDC, EURC)
- Paystack keys + webhook secret
- Flutterwave keys, encryption key + webhook hash
- M-Pesa / Daraja consumer credentials, shortcode, passkey, env
- MTN MoMo subscription key, API user, API key, base URL, target env
- Upstash Redis REST URL + token for rate limiting
- Alchemy API key and per-chain RPC URLs (ETH, Polygon, Base)
- Sentry DSN (public + server), auth token, org, project
- Axiom ingest token + dataset name
- Vercel CI tokens and git SHA note
- Lighthouse CI token
- WebSocket URL for real-time bill updates

Each variable is annotated with [REQUIRED] / [OPTIONAL], its default
value, and a link to where the credential can be obtained.

Closes kellymusk#2
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

@0xfaan is attempting to deploy a commit to the kelly musk's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jul 28, 2026

Copy link
Copy Markdown

@0xfaan Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant