Skip to content

feat: currency display, NPS survey, deposit tour, and branded report templates - #1183

Merged
vjuliaife merged 1 commit into
vjuliaife:mainfrom
EmmanuelOchaje:feat/issues-1032-1033-1035-1037-community-features
Aug 30, 2026
Merged

feat: currency display, NPS survey, deposit tour, and branded report templates#1183
vjuliaife merged 1 commit into
vjuliaife:mainfrom
EmmanuelOchaje:feat/issues-1032-1033-1035-1037-community-features

Conversation

@EmmanuelOchaje

Copy link
Copy Markdown

Summary

Implements four requested importer/surety-facing enhancements:

  • Cross-border currency conversion display (Add Cross-Border Currency Conversion Display for Collateral Values #1037): importers can pick an optional display currency; the dashboard shows collateral/required/reserve amounts converted via a live CoinGecko XLM spot rate, with the rate source and as-of time disclosed. The base-token (XLM) amount always remains visible and is the source of truth — this is purely presentational and never affects a contract call.
  • In-app NPS/feedback survey (Add In-App NPS/Feedback Survey Collection #1035): a small, non-modal, dismissible card prompts importers for an NPS score + optional comment at a configurable cadence (not on every login). Responses are stored per importer, and the surety admin dashboard shows an aggregate weekly NPS trend.
  • Guided tour for DepositWizard (Add In-Context Guided Tour and Tooltips for Deposit Wizard #1033): an optional, dismissible step-by-step tour explains required collateral and the auto-top-up threshold, re-launchable from a help icon, with per-user completion state persisted. It never blocks or delays the underlying deposit submission.
  • Branded report export templates (Add Customizable Branded PDF Export Templates for Dashboard Reports #1032): sureties can configure a logo URL, header text, and footer text per tenant, with a live preview before saving and a sensible default when unset. The template is applied to the regulatory state-report (CSV/JSON) and compliance report downloads without altering the underlying report data.

Type of Change

  • New feature
  • Bug fix
  • Breaking change
  • Docs
  • Refactor
  • CI/infra

Checklist

  • TypeScript types are correct (tsc passes locally for apps/api and apps/web)
  • npm run lint passes for apps/api and apps/web with zero warnings
  • npm run format:check passes for all files touched by this PR
  • Tests added or updated for changed behaviour — not added; these are presentational/opt-in additive features following existing route/component patterns in the codebase (e.g. bond-annotations.ts, onboarding.ts). Happy to add integration tests if requested.
  • Relevant documentation — none of the referenced docs needed updates for this change
  • Breaking changes documented — N/A, none
  • No secrets or credentials committed
  • Stellar contract changes — N/A, no contract changes; all four features are web/API only and never touch a contract call

Related Issues

Closes #1037, closes #1035, closes #1033, closes #1032

Screenshots / Demo

UI changes: a "Display currency" selector + conversion note above the balance tiles on the importer dashboard, a corner NPS survey card, a "?" tour toggle + tour card in the deposit/reserve wizard, and an NPS trend widget + report template editor (with live preview) on the surety admin dashboard. Could not run a Loom/browser demo in this environment — happy to follow up with screenshots if helpful.

Deployment Notes

  • New DB migration apps/api/src/migrations/0010_nps_survey_and_report_templates.ts adds nps_survey_prompts, nps_survey_responses, and report_templates tables — run npm run db:migrate --workspace=apps/api after merge.
  • No new environment variables are required. An optional NPS_SURVEY_CADENCE_DAYS (default 30) can be set to tune the survey prompt cadence.
  • The currency conversion feature calls the public CoinGecko API (api.coingecko.com) directly from the browser; no API key or backend proxy is required.

…lates

- Cross-border currency conversion display on the importer dashboard: an
  optional display-currency preference with a live CoinGecko exchange rate,
  source/as-of disclosure, and the original XLM amount always shown
  alongside. Purely presentational — no contract calls are affected.
- In-app NPS/feedback survey: a non-modal, cadence-gated prompt (server
  controlled via nps_survey_prompts) that stores per-importer responses and
  surfaces an aggregate weekly NPS trend on the surety admin dashboard.
- Optional guided tour for DepositWizard explaining required collateral and
  the auto-top-up threshold, re-launchable from a help icon, with
  per-user completion state and no impact on deposit submission.
- Customizable branded report export templates (logo/header/footer) stored
  per surety, with a live preview before saving and a default fallback,
  applied to the regulatory state-report and compliance report downloads
  without altering the underlying report data.

Closes vjuliaife#1037, closes vjuliaife#1035, closes vjuliaife#1033, closes vjuliaife#1032
@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

Deployment failed for project tariff-shield-web with the following error:

The `vercel.json` schema validation failed with the following message: should NOT have additional property `rootDirectory`

Learn More: https://vercel.com/docs/concepts/projects/project-configuration

@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

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

@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tariff-shield-web Error Error Aug 30, 2026 11:19am

@vjuliaife
vjuliaife merged commit 2c72a81 into vjuliaife:main Aug 30, 2026
1 of 2 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