Skip to content

feat: add user-facing mobile-first UI application#6

Open
gitteri wants to merge 1 commit into
feat/generated-ts-clientsfrom
feat/user-ui
Open

feat: add user-facing mobile-first UI application#6
gitteri wants to merge 1 commit into
feat/generated-ts-clientsfrom
feat/user-ui

Conversation

@gitteri

@gitteri gitteri commented Feb 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • New user-ui/ React/Vite application providing a mobile-first user interface rendered inside a phone simulator frame.
  • Network View with animated visualization of escrow deposits and withdrawals flowing through the system, powered by real-time WebSocket data from the streamer service.
  • Dashboard with balance cards, activity list, and withdrawal functionality.
  • Admin Dashboard for operator management with withdrawal drawer.
  • Settings with cluster switching (devnet/mainnet/custom), wallet management, and explorer link configuration.
  • Solana wallet integration with keypair generation, persistence, and admin signer utilities.
  • Docker deployment support with Dockerfile and server.mjs.

Changed files (56 files, entire user-ui/ directory)

Key components: NetworkView.tsx, DashboardScreen.tsx, AdminDashboard.tsx, WithdrawalDrawer.tsx, PhoneSimulator.tsx, SettingsDrawer.tsx
Key hooks: useUsers.ts (1130 lines -- user simulation and state management), useContraWebSocket.ts, useBalances.ts, useAdminSigner.ts
Key utils: transactions.ts, queries.ts, walletStorage.ts, adminWallet.ts

Dependencies

Test plan

  • cd user-ui && pnpm install && pnpm dev starts without errors
  • Phone simulator renders with network view animation
  • Dashboard shows balance cards and activity list
  • Withdrawal drawer opens and submits transactions
  • Settings drawer allows cluster switching
  • Docker build succeeds: docker build -t user-ui ./user-ui

Made with Cursor

New React/Vite app with phone simulator, network visualization,
dashboard, withdrawal drawers, WebSocket integration for real-time
transaction updates, and Solana wallet context.
gitteri pushed a commit that referenced this pull request May 21, 2026
* fix(core-rpc): add input bounds, decimal fix, and constants module [PRO-891..894]

- Add 64KB body size limit to Core RPC handler with Content-Length
  pre-check (warn on unparseable headers) and Limited wrapper (PRO-891)
- Cap getSignatureStatuses to 256 signatures (PRO-892)
- Cap getBlocks to 500K slot range, reject end < start (PRO-893)
- Fetch actual mint decimals instead of hardcoding 6 (PRO-894)
- Fix pre-existing issues: return proper JSON-RPC error on invalid
  UTF-8 body, propagate get_latest_slot errors instead of unwrap_or(0)
- Extract shared constants module (MAX_BODY_SIZE, MAX_SLOT_RANGE,
  MAX_SIGNATURES, SPL_TOKEN_PROGRAM_ID, SPL layout offsets)

Refs: PRO-891, PRO-892, PRO-893, PRO-894

* chore: greptile feedback

* refactor(core-rpc): move start_test_rpc_server into mod tests

---------

Co-authored-by: Jo D <dev-jodee@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant