Roux 
UI

About this project

Roux UI is a Louisiana-inspired component platform where developers discover, install, and contribute custom React UI components — think shadcn/ui but community-driven and installable via npm, bun, yarn, or pnpm. Components are built with Framer Motion and GSAP, many free with a subscription tier for premium ones. An AI-powered component builder lets users generate React components by text prompt or voice using OpenAI, Anthropic, and Gemini. Developers can upload their own components, which trigger a Vercel redeploy on admin approval and auto-snapshot the component preview for social sharing. Features a like and rating system, real-time chat via Ably, interactive coding courses with Monaco Editor challenges, PWA support with iOS push notifications, and full SEO optimization.

Technology & Features

  • Next.js (App Router)
  • TypeScript
  • Framer Motion
  • Prisma
  • PostgreSQL
  • GraphQL
  • Tailwind CSS v4
  • GSAP
  • Prisma ORM
  • PostgreSQL (Neon)
  • NextAuth v5
  • Sandpack
  • TanStack Query
  • Ably
  • UploadThing
  • Zustand
  • React Hook Form
  • Zod
  • Resend
  • Vercel Analytics
  • web-push
# package.json
{ "dependencies": { "@auth/prisma-adapter": "^2.11.1", "@codesandbox/sandpack-react": "^2.20.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@emoji-mart/data": "^1.1.1", "@emoji-mart/react": "^1.1.1", "@hookform/resolvers": "^5.2.2", "@mdx-js/loader": "^3.1.1", "@mdx-js/react": "^3.1.1", "@monaco-editor/loader": "^1.6.1", "@monaco-editor/react": "^4.7.0", "@neondatabase/serverless": "^1.0.2", "@next/mdx": "^16.0.2", "@nivo/bar": "^0.99.0", "@nivo/core": "^0.99.0", "@nivo/line": "^0.99.0", "@nivo/pie": "^0.99.0", "@prisma/adapter-neon": "^7.1.0", "@prisma/client": "^6.19.0", "@radix-ui/react-popover": "^1.1.15", "@tailwindcss/postcss": "^4", "@tanstack/ai": "^0.4.2", "@tanstack/ai-anthropic": "^0.4.2", "@tanstack/ai-gemini": "^0.4.1", "@tanstack/ai-ollama": "^0.4.0", "@tanstack/ai-openai": "^0.4.0", "@tanstack/react-query": "^5.90.12", "@tanstack/react-query-devtools": "^5.91.1", "@types/node": "^20", "@types/nodemailer": "^7.0.4", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@types/react-syntax-highlighter": "^15.5.13", "@types/ua-parser-js": "^0.7.39", "@types/web-push": "^3.6.3", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.46.4", "@typescript-eslint/utils": "^8.46.4", "@uploadthing/react": "^7.3.3", "@vercel/analytics": "^1.6.1", "ably": "^2.14.0", "animate.css": "^4.1.1", "clsx": "^2.1.1", "concurrently": "^9.2.1", "date-fns": "^4.1.0", "dayzed": "^3.2.3", "emoji-mart": "^5.6.0", "eslint": "^9", "eslint-config-next": "^16.0.8", "framer-motion": "^12.23.24", "html-to-image": "^1.11.13", "install": "^0.13.0", "lucide-react": "^0.552.0", "monaco-editor": "^0.54.0", "motion": "^12.23.24", "next": "^16.0.8", "next-auth": "^5.0.0-beta.30", "next-mdx-remote": "^6.0.0", "next-themes": "^0.4.6", "next13-progressbar": "^1.2.2", "nodemailer": "^7.0.12", "prism-react-renderer": "^2.4.1", "prisma": "^6.19.0", "qrcode-terminal": "^0.12.0", "react": "19.2.0", "react-beautiful-dnd": "^13.1.1", "react-dom": "19.2.0", "react-easy-crop": "^5.5.6", "react-google-recaptcha-v3": "^1.11.0", "react-hook-form": "^7.66.0", "react-icons": "^5.5.0", "react-spinners": "^0.17.0", "react-syntax-highlighter": "^16.1.0", "react-use-measure": "^2.1.7", "resend": "^6.4.2", "server-only": "^0.0.1", "sucrase": "^3.35.1", "tailwind-merge": "^3.3.1", "tailwindcss": "^4", "tailwindcss-animate": "^1.0.7", "tsx": "^4.20.6", "typescript": "^5", "ua-parser-js": "^2.0.7", "uploadthing": "^7.7.4", "web-push": "^3.6.7", "zod": "^4.1.12", "zustand": "^5.0.8" } }

Environment

Frontend

Make sure to add these to either local.env or .env file

# .env
Copy
NEXT_PUBLIC_APP_URL="http://localhost:3000"
NEXT_PUBLIC_UPLOADTHING_APP_ID=""
NEXT_PUBLIC_VAPID_PUBLIC_KEY=""
DATABASE_URL=""
AUTH_SECRET=""
AUTH_GOOGLE_ID=""
AUTH_GOOGLE_SECRET=""
OPENAI_API_KEY=""
ANTHROPIC_API_KEY=""
GEMINI_API_KEY=""
UPLOADTHING_TOKEN=""
RESEND_API_KEY=""
ABLY_API_KEY=""
VAPID_PRIVATE_KEY=""
VAPID_PUBLIC_KEY=""

Source code

Similar projects

See allProjects
profile picture of Trey

Let's talk

code

Get in touch
trey@treyrader.dev

504.756.4538