Skip to content

Add /faq page covering anon + logged-in audiences#178

Merged
fleveque merged 4 commits into
mainfrom
feat/faq-page
May 25, 2026
Merged

Add /faq page covering anon + logged-in audiences#178
fleveque merged 4 commits into
mainfrom
feat/faq-page

Conversation

@fleveque

Copy link
Copy Markdown
Owner

Why

Quantic now spans enough distinct concepts — Portfolio vs Radar vs Buy Plan, Pulse community sharing, Telegram bot, AI insights, multi-currency, dividend import — that visitors (especially pre-signup) hit "wait, what?" friction without a single canonical reference. The recent footer disclaimer (#177) addressed the legal angle; this PR addresses the curiosity angle.

What

New /faq page at app/frontend/pages/FaqPage.tsx. Public route registered in App.tsx next to /login so both anonymous visitors and logged-in users get it. Inherits the existing Layout chrome automatically (header, language/theme toggles, disclaimer-bearing footer).

Expand/collapse pattern reuses PortfolioInsights.tsx's useState(isExpanded) + ChevronDown approach — no shadcn/accordion install needed, keeps the dep surface flat.

22 questions across 7 sections, covering both audiences:

Section Questions
Getting started free / broker connection / try without signup / portfolio vs radar
Portfolio & Radar how to add / multi-currency / YoC / target price / community target / dividend score
Dividends upcoming math / broker import / supported brokers / unsupported broker
AI insights which model / usage limit / data privacy
Pulse what is it / who sees / how to opt out
Telegram how to connect / what to ask
Data & privacy data source / accuracy / no data sales

Footer link added next to the copyright line in Layout.tsx.

Full en + es i18n in the same commit — Spanish translations land alongside English, no lag.

Motion reuses the existing lib/motion.ts variants (fadeUp, staggerChildren, onceInView) so the page speaks the same motion language as the home redesign. prefers-reduced-motion honored via the global CSS guard.

Out of scope (deferred)

  • Search/filter
  • Deep-linking via URL hash (/faq#how-do-i-import)
  • "Was this helpful?" feedback
  • Linking from in-app surfaces (e.g., a "?" next to "Yield on Cost" deep-linking to the FAQ entry)

Test plan

  • npx tsc --noEmit — clean
  • npx vite build — succeeds
  • Manual: visit /faq logged out → all sections render, cards expand/collapse
  • Manual: visit /faq logged in → same page, full chrome
  • Manual: footer link works from any page
  • Manual: switch to ES → all 22 Q+A render in Spanish
  • Manual: reduced-motion → no jank
  • Manual: 375px mobile → single column, taps clean

🤖 Generated with Claude Code

fleveque and others added 4 commits May 25, 2026 18:24
Quantic now spans enough distinct concepts (portfolio vs radar vs
buy plan, Pulse community sharing, Telegram bot, AI insights,
multi-currency, dividend import) that visitors hit "wait, what?"
friction without a canonical reference. The recent footer
disclaimer covered the legal angle; this PR covers the curiosity
angle.

**New `/faq` page** — public route (works for both auth states),
inherits the existing Layout chrome (header, language/theme
toggles, footer with disclaimer). Each question is an
expand/collapse card using the same `useState(isExpanded)` +
`ChevronDown` pattern that `PortfolioInsights` already uses — no
new dep, no accordion install needed.

**22 questions across 7 sections** covering both audiences:

- Getting started (free? broker? demo? portfolio vs radar?)
- Portfolio & Radar (how to add, multi-currency, YoC, target
  price, community target, dividend score)
- Dividends (upcoming math, broker import, supported brokers)
- AI insights (which model, usage limit, data privacy)
- Pulse (what is it, who sees, opt-out)
- Telegram (connecting, what to ask)
- Data & privacy (source, accuracy, no data sales)

Footer gets a small `FAQ` link next to the copyright line.
Full en + es i18n in the same commit.

Sections use the existing motion variants (`fadeUp`,
`staggerChildren`, `onceInView`) from `lib/motion.ts` so the page
matches the home-redesign motion language. Reduced-motion safe
via the global CSS guard.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Was claiming Claude — actual current provider is Google's Gemini
2.5 Flash (`app/services/ai_providers/gemini_provider.rb`). The
provider layer is agnostic per the AiProviders.current pattern, so
the answer keeps the "can swap to OpenAI / Anthropic depending on
the task" framing.

en + es both updated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Footer link was the only entry point — discreet to the point of
invisibility. Adds an "FAQ" NavLink to both desktop and mobile
nav, always visible regardless of auth state, so anonymous
visitors scoping the product can find it next to Home.

Footer link kept as a backup for users who scroll.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Footer link now reads "Frequently Asked Questions" / "Preguntas
frecuentes" instead of "FAQ". The nav keeps the acronym since
it fits the compact nav row better; the footer has the breathing
room for the full phrase and reads less cryptic.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@fleveque fleveque merged commit 931b739 into main May 25, 2026
5 checks passed
@fleveque fleveque deleted the feat/faq-page branch May 25, 2026 16:37
fleveque added a commit to fleveque/pulse that referenced this pull request May 25, 2026
Mirror of fleveque/dividend-portfolio#178: a small footer link to
the Quantic FAQ alongside the existing copyright + Francesc
Leveque line. Opens in a new tab since it's an external cross-app
link.

Reuses the same "Frequently Asked Questions" / "Preguntas
frecuentes" copy as the Quantic footer for consistency.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.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