Building side projects to solve real-world friction is one of my favorite developer workflows. Recently, I wanted to fix a common hassle: traditional paper invitations getting lost and clunky PDFs failing on mobile screens.
To solve this, I built InviteVia — a lightweight, interactive digital invitation platform for weddings, birthdays, and private events.
🛠️ The Tech Stack
I wanted the user experience to be lightning-fast with zero onboarding friction for guests (no downloads or sign-ups required).
Here is what I used to build it:
- Framework: Next.js (App Router)
- Styling: Tailwind CSS with modern Glassmorphism UI components
- Deployment & Infra: Vercel & Cloudflare
-
Analytics:
@next/third-parties/googlefor GA4
✨ Key Features Implemented
- Live RSVP Tracking: Real-time guest attendance updates without requiring guests to create an account.
- 1-Tap Location Navigation: Native Google/Apple Maps integration embedded into the invite page.
- Interactive UI: Event countdown timers, embedded music, and localized support for 19 languages.
🚀 Try It Out & Feedback
The goal was to make creating an invitation take less than 2 minutes while maintaining a premium feel.
You can check out the live platform here: https://inviteviaapp.com
I'd love to hear your thoughts on the UI/UX, performance, or any feedback from fellow developers!
Top comments (1)
18 locales with proper hreflang including x-default on a launch-day site is genuinely rare — most products bolt i18n on later and pay for it in search. Nice groundwork.
Quick public check of inviteviaapp.com (headers + public config only): you're at 5 of 6 security headers — HSTS (2y), X-Frame-Options DENY, nosniff, Referrer-Policy and Permissions-Policy are all live. The one gap is Content-Security-Policy, which is also the one that matters most for a product collecting RSVP form data: without it, any injected script (compromised dependency, XSS in a guest name field rendered back to the host) runs with full page trust.
On Next.js the clean path is a nonce-based CSP in middleware: generate a nonce per request, pass it to your scripts, and set script-src 'nonce-...' 'strict-dynamic'. Vercel's own docs have a working middleware example — it's about 30 lines and avoids unsafe-inline entirely. Start with Content-Security-Policy-Report-Only so you can catch anything that would break before enforcing.
Everything else — TLS 1.3, title/meta lengths, single h1, robots + sitemap — checks out. Happy to re-run the scan free once the CSP lands. Good luck with InviteVia!