Feat/per format optional fields - #51
Open
RomanDenysov wants to merge 5 commits into
Open
Conversation
Rebuilt the generator as a single card with segmented format control, per-format optional fields behind a Fields menu (persisted per format in localStorage), auto-submit hooks, and redesigned UI primitives (sharp corners, pixel title, drafting-grid background). Also riding in the shared files: - SEO metadata/CTR rework: titles lead with per-locale head queries (sk "Generátor QR platby", cs "QR platba generátor", en "SEPA QR Code Generator"), descriptions 140-160 chars with free/no-signup differentiators - Per-locale first-visit format default (sk bysquare, cs spayd, en epc) and /?format= query param support - Soft IBAN/format mismatch hint (never auto-switches) with format_hint_accepted + form_validation_failed events - API layer sync for optional fields (qr-docs, qr-schema, mcp-server, webmcp, gpt-config, docs try-it/parameters) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two content pages built on next-intl pathnames (first use in the app): - "How to create a payment QR code" guide - answer-first intro, step cards, per-format explainer (cs leads SPAYD, en leads EPC), FAQ, HowTo + FAQPage + BreadcrumbList JSON-LD (sk /ako-vytvorit-qr-kod-na-platbu, cs /jak-vytvorit-qr-kod-pro-platbu, en /how-to-create-payment-qr-code) - SEPA QR landing targeting NL/DE/UK "sepa qr" demand, CTA prefills the EPC tab via /?format=epc localePath/getAlternates now resolve localized slugs via getPathname; locale switcher moved to typed object-href replace; internal links from home "More tools" and FAQ items; sitemap entries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Upstash counters stats:qr:total / stats:qr:{YYYY-MM} / stats:api:total.
Body-less sendBeacon POST /api/v1/stats/hit after client generation
(single + bulk, count capped at 100); /api/v1/qr increments via after().
Public GET /api/v1/stats returns { total, month, api }, s-maxage=600.
Homepage renders three cards from a direct Redis read (10-min in-memory
cache); month card gated on a full previous month of data, section
hidden below 100 total. No payment data ever reaches the endpoints.
openapi.json + llms.txt document the stats endpoint and new pages.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Random 32-byte secret minted on first Copy link, stored only in
localStorage on the history entry; public id =
base64url(sha256(secret)).slice(0,16) travels as ?t= on the share URL.
The /p page fires POST /api/v1/t/{id} from client JS only (never SSR,
so unfurl bots don't count); Redis keeps count + last-opened with
90-day TTL. Owner sees "Opened N× · last <time>" in the share dialog
and history list by re-deriving the id from the secret.
Count + timestamp only - no uniques, no IP, no fingerprinting; the
payment payload never touches the server; copy says "opened", never
"paid".
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.