A modern, beautiful feedback collection platform built with Next.js, Supabase, and shadcn/ui. Create feedback boards, collect anonymous insights, and make data-driven decisions.
- π User Authentication - Secure email/password authentication with Supabase
- π Board Creation - Create beautiful feedback boards with custom categories
- π¬ Anonymous Feedback - Public pages for anonymous feedback submission
- π Private Dashboard - View and manage all feedback privately
- π·οΈ Feedback Categories - Organize feedback with custom categories and colors
- π Advanced Filtering - Search and filter feedback by category, date, and content
- π Vibrant Colors - Beautiful gradient designs throughout the app
- β¨ Smooth Animations - Framer Motion animations for engaging interactions
- π± Responsive Design - Works perfectly on all devices
- π Glass Morphism - Modern UI with backdrop blur effects
- π Loading States - Elegant loading animations and states
- π Row-Level Security - Supabase RLS policies for data protection
- π« Spam Prevention - Basic validation and spam detection
- β‘ Performance - Optimized with Next.js App Router
- βΏ Accessibility - Built with accessibility best practices
- Frontend: Next.js 14 (App Router), React, TypeScript
- Backend: Supabase (PostgreSQL, Authentication, Real-time)
- UI Components: shadcn/ui, Radix UI
- Styling: Tailwind CSS
- Animations: Framer Motion
- Deployment: Vercel
- Node.js 18+
- npm or pnpm
- Supabase account
```bash git clone https://github.com/yourusername/feedback-hub.git cd feedback-hub ```
```bash npm install
pnpm install ```
- Create a new project at supabase.com
- Go to Settings β API to get your project URL and anon key
- Copy `.env.example` to `.env.local`:
```bash cp .env.example .env.local ```
- Update `.env.local` with your Supabase credentials:
```env NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key ```
- Go to your Supabase project dashboard
- Navigate to SQL Editor
- Run the setup script from `scripts/setup-database.sql`
This will create all necessary tables and security policies.
```bash npm run dev
pnpm dev ```
Open http://localhost:3000 to see your app!
```
feedback-hub/
βββ app/ # Next.js App Router pages
β βββ board/[slug]/ # Public feedback pages
β βββ boards/ # Board management
β βββ dashboard/ # User dashboard
β βββ login/ # Authentication
β βββ signup/
βββ components/ # React components
β βββ auth/ # Authentication components
β βββ boards/ # Board management components
β βββ dashboard/ # Dashboard components
β βββ feedback/ # Feedback components
β βββ ui/ # shadcn/ui components
βββ lib/ # Utilities and configurations
β βββ supabase/ # Supabase client setup
βββ scripts/ # Database setup scripts
βββ middleware.ts # Next.js middleware for auth
```
- `id` (UUID, Primary Key)
- `slug` (Text, Unique) - URL-friendly identifier
- `name` (Text) - Board display name
- `description` (Text, Optional) - Board description
- `owner_id` (UUID) - References auth.users
- `created_at` (Timestamp)
- `id` (UUID, Primary Key)
- `board_id` (UUID) - References boards
- `name` (Text) - Category name
- `color` (Text) - Hex color code
- `created_at` (Timestamp)
- `id` (UUID, Primary Key)
- `board_id` (UUID) - References boards
- `category_id` (UUID) - References board_categories
- `content` (Text) - Feedback content
- `author_name` (Text, Optional) - Optional author name
- `created_at` (Timestamp)
- Boards: Public read, owner-only write
- Categories: Public read, board owner-only write
- Feedback: Public insert, board owner-only read
The app uses a vibrant color palette with gradients. Main colors:
- Primary: Blue (#3B82F6) to Purple (#8B5CF6)
- Secondary: Purple (#8B5CF6) to Pink (#EC4899)
- Success: Green (#10B981) to Emerald (#059669)
Framer Motion is used for:
- Page transitions
- Component entrance animations
- Hover effects
- Loading states
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy!
```bash
npm i -g vercel vercel ```
Make sure to set these in your deployment platform:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- Fork the repository
- Create a feature branch (`git checkout -b feature/amazing-feature`)
- Commit your changes (`git commit -m 'Add amazing feature'`)
- Push to the branch (`git push origin feature/amazing-feature`)
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - The React framework
- Supabase - Backend as a Service
- shadcn/ui - Beautiful UI components
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animation library
If you have any questions or need help, please:
- Check the Issues page
- Create a new issue if your question isn't answered
- Join our Discord community
Made with β€οΈ by Your Name ```
Let's also create the environment example file: