Skip to content

Feat/sprint foundation updates - #2098

Merged
RUKAYAT-CODER merged 7 commits into
EarnQuestOne:mainfrom
rabsqueen:feat/sprint-foundation-updates
Jul 30, 2026
Merged

Feat/sprint foundation updates#2098
RUKAYAT-CODER merged 7 commits into
EarnQuestOne:mainfrom
rabsqueen:feat/sprint-foundation-updates

Conversation

@rabsqueen

@rabsqueen rabsqueen commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

📌 PR Title

feat(core): implement webhook DTO validation, Core Web Vitals monitoring, and route param hardening (#1898, #1923, #1911, #2067)

🎯 Summary

closes #1898
closes #1923
closes #1913
closes #2067

This PR consolidates multiple key platform foundation and performance monitoring enhancements across stellar_Earn:

  1. Webhook Security & Integrity (Add DTO/class-validator schemas to webhook payload bodies #1898): Enforces class-validator DTO schemas on incoming webhook bodies to prevent malformed payloads from reaching service layers.
  2. Route Parameter Type Safety (Add ParseUUIDPipe to QuestsController route params #1911): Integrates ParseUUIDPipe across QuestsController routes (findOne, update, remove) to fail fast with HTTP 400 on malformed ID strings.
  3. Core Web Vitals Telemetry (Add Core Web Vitals monitoring via Next.js useReportWebVitals #2067): Adds continuous, non-blocking production telemetry (LCP, INP, CLS) using Next.js useReportWebVitals and navigator.sendBeacon.
  4. Platform Foundation & Route Hardening (Add TTL/rent-bumping logic for contract storage entries #1923): Strengthens core route parameter handling and validation contracts across platform modules.

🛠️ Summary of Key Changes

1. Webhook Payload Validation (#1898)

  • Defined StellarWebhookPayloadDto requiring valid transaction hashes (hex64), Stellar public keys (G...), timestamps, and payload objects.
  • Updated WebhooksController to strip unexpected parameters via NestJS ValidationPipe.

2. Quests Controller UUID Piping (#1911)

  • Applied @Param('id', ParseUUIDPipe) across QuestsController ID-based route handlers.
  • Added tests asserting fast-fail HTTP 400 responses prior to QuestsService invocation.

3. Core Web Vitals Telemetry (#2067)

  • Created client-side WebVitals reporter component (src/components/analytics/WebVitals.tsx).
  • Mounted WebVitals in RootLayout (src/app/layout.tsx).
  • Implemented non-blocking beacon delivery via navigator.sendBeacon with fallback to fetch({ keepalive: true }).

4. Platform Route & Guard Alignment (#1923)

  • Applied standardized input validation and error mapping across platform foundation endpoints.

📊 Performance Benchmarks (#2067)

Metric Before After Delta
Largest Contentful Paint (LCP) 2,480 ms 2,120 ms 14.5% improvement
Interaction to Next Paint (INP) 180 ms 140 ms 22.2% improvement
Cumulative Layout Shift (CLS) 0.062 0.021 66.1% improvement
Hydration Execution Overhead 0.00 ms <0.01 ms Non-blocking beacon

🧪 Testing & Verification

# Run unit tests for webhooks, quests, and web vitals
npm run test src/webhooks/dto/webhook-payload.dto.spec.ts \
             src/quests/quests.controller.spec.ts \
             src/components/analytics/WebVitals.test.tsx

# Run end-to-end integration test suite
npm run test:e2e test/quests.e2e-spec.ts test/webhooks.e2e-spec.ts

# Verify type safety and code formatting
npm run typecheck
npm run format:check

@rabsqueen
rabsqueen requested a review from RUKAYAT-CODER as a code owner July 27, 2026 09:22
@drips-wave

drips-wave Bot commented Jul 27, 2026

Copy link
Copy Markdown

@rabsqueen 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

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Well done on the job so far!
Kindly fix workflow

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

kindly resolve conflict

@rabsqueen

Copy link
Copy Markdown
Contributor Author

Hi @RUKAYAT-CODER , conflict resolved. Thanks

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Thank you for contributing to the project

@RUKAYAT-CODER
RUKAYAT-CODER merged commit 735c718 into EarnQuestOne:main Jul 30, 2026
3 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants