MiniVouch is a sleek, modern, and highly secure testimonial wall built for individuals, freelancers, and businesses. It allows you to collect authenticated feedback from mentees, recruiters, clients, and collaborators, giving your profile an undeniable social proof boost.
Say goodbye to messy screenshots and unverified quotes. MiniVouch ensures authenticity while offering a beautiful frontend to showcase your reputation.
- Seamless Management: Users can edit or delete their pending testimonials directly from their personal dashboard.
- Anonymity Toggling: Effortlessly switch between anonymous and identified states, even after submission (while pending).
- Custom Avatars & Attachments: Submitters can use their default social avatar, upload a custom one, or attach evidence images.
- Protected Admin Panel: Site owners can approve, reject, or delete testimonials before they appear on the public wall.
- Personal Dashboard: Submitters can log in to track the status of their testimonials (Pending, Approved, Rejected).
- Consolidated UI: High-fidelity cards and forms provide a uniform experience across the entire platform.
- Framework: Next.js (App Router)
- Authentication: Clerk
- Database & Storage: Supabase (PostgreSQL + S3 Storage)
- Styling: Tailwind CSS v4
- Icons: Lucide React
- Deployment: Vercel (Recommended)
Clone the repository and install dependencies:
git clone https://github.com/TuShArBhArDwA/minivouch.git
cd MiniVouch
npm installCreate a .env.local file in the root directory and add the following variables:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/login
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/login
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# Admin Configuration (Your Clerk User ID)
ADMIN_USER_ID=user_2...Run the SQL script found in supabase/schema.sql directly in your Supabase SQL Editor. This will:
- Create the
testimonialstable. - Create the
testimonialsstorage bucket. - Apply the necessary Row Level Security (RLS) policies.
Start the Next.js development server:
npm run devOpen http://localhost:3000 to view the application.
For an in-depth look at how MiniVouch is built, check out the documentation:
- High-Level Design (HLD) - System architecture and component overview.
- Low-Level Design (LLD) - Database schema, API route logic, and component details.
MiniVouch is designed with security as a priority:
- Authentication: Handled entirely by Clerk, ensuring secure session management.
- Database Access: Client-side interaction is restricted. API routes perform all reads/writes using the Supabase Service Role key, verifying Clerk sessions on the server side securely.
- RLS Policies: Applied at the Supabase level to ensure no unauthorized direct access occurs.
If you find this helpful, consider supporting me:
- Sponsor Me: Buy Me a Coffee!
This project is licensed under the MIT License - see the LICENSE file for details.
If you’d like to connect, feel free to reach out — Click here