FeedbackKit - Multi-Site Customer Feedback SaaS

A multi-tenant SaaS platform for collecting user ratings and feedback via lightweight embeddable widgets, powered by Laravel, Inertia.js, Vue 3, and WebAuthn passkeys.

  • Laravel 12
  • Vue 3
  • Inertia.js
  • Tailwind CSS v4
  • Reka UI
  • WebAuthn
  • Vite

Problem

Product teams need continuous customer feedback, but existing feedback widgets are either heavy third-party embeds that slow down initial page loads or disconnected survey tools that don't tie into modern authentication.

Solution

FeedbackKit provides lightweight embeddable JavaScript widgets, a clean real-time triage inbox with rating distributions, and biometric WebAuthn passkey authentication.

My role

Full-stack product architect - database design, widget compiler, Inertia Vue frontend, and passwordless authentication.

Impact

Allows product owners to install feedback prompts with one script tag, review customer sentiment with emoji ratings, and resolve incoming bug reports efficiently.

Challenges

Building an embeddable widget script with isolated CSS that does not clash with host application styles, and integrating WebAuthn passkeys with seamless fallback.

Screenshots

The problem

Collecting timely feedback from active website visitors is essential for early-stage SaaS and digital products. However, commercial feedback tools often bundle heavy analytics scripts, complex pricing tiers, and legacy password authentication.

The approach

FeedbackKit was designed as a lean, multi-site feedback hub:

  • Embeddable Vanilla Widget: A zero-dependency script compiled via a dedicated Vite configuration (vite.widget.config.ts) that mounts an elegant rating sheet on any client website.
  • Unified Overview & Triage: Product owners manage multiple websites and widgets from one central dashboard with average rating trends and sentiment breakdowns (1–5 stars).
  • Passwordless Security: Native WebAuthn and passkey integration (@laravel/passkeys) enables biometric login via Touch ID, Face ID, and security keys without credentials.
  • Modern Stack: Built with Laravel 12 on the backend and Inertia.js v3 + Vue 3 on the frontend using Tailwind CSS v4 and Reka UI primitives.

Architecture notes

The application runs a dual-build pipeline:

  1. App Shell: Inertia-driven SPA for authenticated dashboard operations, website settings, and feedback management.
  2. Widget Bundle: Self-contained client runtime designed for embedding on third-party domains with CORS-protected ingestion endpoints.