Skip to content

Feature/calendar export#549

Open
Okorie2000-code wants to merge 13 commits into
Smartdevs17:mainfrom
Okorie2000-code:feature/calendar-export
Open

Feature/calendar export#549
Okorie2000-code wants to merge 13 commits into
Smartdevs17:mainfrom
Okorie2000-code:feature/calendar-export

Conversation

@Okorie2000-code

Copy link
Copy Markdown
Contributor

What this PR does

Changes

  • List of notable files and modules touched (monorepo wiring, Sentry integration, dashboards, etc.)
  • Notes about the Turborepo configuration, shared packages, and ESLint/TS config

Why

  • Rationale for the changes and how they solve the Acceptance Criteria

How to test

  • Steps to reproduce locally, including commands to run build/test
  • Any environment variables needed (e.g., SENTRY_DSN)
  • How to verify the dashboards/alerts configuration (stubs or real)

Notes

Okorie2000-code and others added 13 commits June 1, 2026 17:49
…nts (Smartdevs17#440)

- Add GasPriceOracle.sol: dynamic fee calculation with baseFee + priority fee,
  ERC-20 to ETH conversion rate, fee quotes with TTL, batch price ratio updates
- Add RelayPaymaster.sol: GSN-compatible paymaster accepting ERC-20 fee payment,
  user deposits, relayer management, gas sponsorship tracking
- Add backend/src/relayer/gasOracle.ts: EVM gas oracle service with EIP-1559
  base fee fetching, ERC-20 price feed integration, quote generation with TTL
- Add backend/src/relayer/evmRelay.ts: EVM meta-transaction relay service via
  MetaTxForwarder with EIP-712 signature verification, nonce management,
  rate limiting, and graceful fallback when relayer not configured
- Enhance backend/src/routes/relayer.ts with EVM endpoints:
  POST /evm/relay, GET /evm/gas-quote, GET /evm/nonce/:address
- Add Foundry test GasAbstraction.t.sol: 25 tests covering MetaTxForwarder,
  GasPriceOracle, RelayPaymaster, and integration flows

Closes Smartdevs17#334

Co-authored-by: Your Name <you@example.com>
- Add Merkle tree verification to BatchSplitter.sol with
  batchTransferMerkle() and verifyBatchMerkleProof() functions
  for batch integrity verification
- Add dry-run estimation (POST /estimate) returning total amount,
  gas units, duplicate count, invalid addresses, and duration
- Add scheduled batch execution with cron-style processing
  (POST /schedule, GET /scheduled, DELETE /scheduled/:id)
- Add JSON file upload support alongside CSV in POST /parse
- Create frontend batch upload page (dashboard/batch) with
  CSV/JSON file upload, preview table, duplicate detection,
  dry-run estimate display, and submit/schedule actions
- Add batch API client methods to frontend/lib/api.ts

Closes Smartdevs17#335

Co-authored-by: Your Name <you@example.com>
…nts (Smartdevs17#438)

- Add GasPriceOracle.sol: dynamic fee calculation with baseFee + priority fee,
  ERC-20 to ETH conversion rate, fee quotes with TTL, batch price ratio updates
- Add RelayPaymaster.sol: GSN-compatible paymaster accepting ERC-20 fee payment,
  user deposits, relayer management, gas sponsorship tracking
- Add backend/src/relayer/gasOracle.ts: EVM gas oracle service with EIP-1559
  base fee fetching, ERC-20 price feed integration, quote generation with TTL
- Add backend/src/relayer/evmRelay.ts: EVM meta-transaction relay service via
  MetaTxForwarder with EIP-712 signature verification, nonce management,
  rate limiting, and graceful fallback when relayer not configured
- Enhance backend/src/routes/relayer.ts with EVM endpoints:
  POST /evm/relay, GET /evm/gas-quote, GET /evm/nonce/:address
- Add Foundry test GasAbstraction.t.sol: 25 tests covering MetaTxForwarder,
  GasPriceOracle, RelayPaymaster, and integration flows

Closes Smartdevs17#334

Co-authored-by: Your Name <you@example.com>
…tdevs17#436)

- Add TimelockController.sol with configurable delay (min 48h), multi-sig
  approval threshold, proposal scheduling, execution, and cancellation
- Add EmergencyPause.sol with guardian multi-sig pause mechanism,
  auto-expire after 7 days, and admin resume function
- Add Foundry test suite (TimelockUpgrade.t.sol) covering:
  schedule+execute, pre-delay execution revert, cancelled upgrades,
  insufficient approvals, duplicate approval rejection, emergency pause
  activation/resume/auto-expiry, and configuration validation
- Enhance upgrade.ts script with TimelockController governance flow
  (schedule proposal, wait for approvals + delay, execute)

Closes Smartdevs17#336

Co-authored-by: Your Name <you@example.com>
…martdevs17#343) (Smartdevs17#442)

- Add MultisigWallet and MultisigProposal types to Soroban contract with
  full on-chain create/approve/reject/cancel/expire lifecycle
- Add signer management (add/remove) with blocking-threshold rejection logic
  and auto-cancellation of affected proposals on signer removal
- Add configurable per-wallet proposal timeouts with auto-expiry sweep
- Extend backend service with SignerChangeProposal consensus workflow,
  threshold-change proposals, and rejection finalization
- Add Zod schemas for all new endpoints (add/remove signer, threshold change,
  proposal reject)
- Add REST routes: PATCH /groups/:id, /signers/add, /signers/remove,
  /threshold, /proposals/:id/reject, /proposals/:id/cancel, /sweep-expired
- Rewrite frontend dashboard with wallet creation dialog (configurable signers
  + threshold + timeout), proposal creation, expandable approval status cards,
  signer management dialog, stats bar, and status/wallet filters

Closes Smartdevs17#343, Smartdevs17#354, Smartdevs17#342, Smartdevs17#355
Closes Smartdevs17#65

- Add generateICS utility to build valid iCalendar strings from events
- Add downloadICS helper that triggers a browser .ics file download
- Add handleAddToCalendar on the project detail page that maps milestones
  with due dates to ICS events and downloads the file
- Render an 'Add to Calendar' button (CalendarDays icon) in the action bar
Co-authored-by: CharlieChinedu <Charliechinedu@gmail.com>
…missing acceptance-criteria items (Smartdevs17#445)

* feat: implement 2FA, analytics, forms, and project milestones (Smartdevs17#338 Smartdevs17#339 Smartdevs17#340 Smartdevs17#341)

Resolves four issues by fixing critical bugs and adding missing acceptance-criteria features.

Issue Smartdevs17#338 — 2FA for wallet operations:
- Fixed: twoFactorAuthRouter was never registered in index.ts, making all 2FA endpoints return 404
- Fixed: Verify2FARequestSchema and Disable2FARequestSchema rejected 8-char backup codes (schema enforced 6-digit TOTP only); now uses z.union to accept both
- Added: /dashboard/security page for users to enable, confirm, and disable 2FA
- Added: getPolicy/setPolicy functions and GET/POST /api/v1/auth/2fa/policy endpoints for per-user enforcement configuration

Issue Smartdevs17#339 — Form builder and embed system:
- Fixed: index.ts imported formsRouter with .ts extension (should be .js in ESM)
- Added: payment field type to form schema with amount+currency validation
- Added: exportFormSubmissions() and GET /api/v1/forms/:id/export?format=csv|json for response data export
- Improved: Embed button now shows full iframe HTML snippet with sandbox attribute instead of copying only the URL

Issue Smartdevs17#340 — Analytics and revenue reporting:
- Added: time period selector (1h/24h/7d/30d) in the analytics dashboard UI; passes ?hours= to backend
- Added: exportToCsv() method and GET /api/v1/analytics/export for CSV download of revenue time-series
- Added: buildMerchantPercentiles() and GET /api/v1/analytics/percentiles with industry benchmark comparison (simulated, clearly labeled)
- Added: scheduleReport/getReportSchedule and POST/GET /api/v1/analytics/schedule-report for scheduled email report preferences

Issue Smartdevs17#341 — Project-based payment management:
- Fixed: projects/page.tsx had duplicate getStatusColor declarations and completely broken JSX nesting — rewritten with clean two-column filter+cards layout
- Added: getOverdueMilestones() method in services/projects.ts returning milestones past due date
- Added: GET /api/v1/projects/overdue-alerts (auth-guarded) for overdue milestone detection
- Added: invoiceHint: true in milestone approval response to signal frontend for invoice creation

Closes Smartdevs17#338
Closes Smartdevs17#339
Closes Smartdevs17#340
Closes Smartdevs17#341

* security: fix auth/authorization gaps in 2FA, analytics, forms, and projects endpoints

- 2FA policy GET/POST: require authenticated session; scope GET to self (or admin),
  POST derives userId from session (not body) and rejects cross-user mutations for non-admins
- Analytics schedule-report GET/POST: require auth; POST binds userId to session,
  GET enforces self-only access (admin bypass)
- Forms /export: require authenticated session before exporting any submissions
- Forms CSV export: prefix formula-injection characters (=+-@\t\r) with single quote
  to prevent spreadsheet formula execution
- Projects /overdue-alerts: scope getOverdueMilestones() to caller's ownerId
  (admin role returns all); added ownerId param to service method

---------

Co-authored-by: harystyleseze <harystyleseze@gmail.com>
@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

@Okorie2000-code is attempting to deploy a commit to the smartdevs17's projects Team on Vercel.

A member of the Team first needs to authorize it.

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.

DevTooling: Implement Real-Time Error Monitoring with Sentry and Custom Dashboards DevTooling: Implement Monorepo with Turborepo for Shared Packages

9 participants