Your personal curator for the digital age. Discover, share, and track the content that actually matters.
HypeShelf is a community-driven recommendation platform where authenticated users can share movies, books, tools, music, and games they're genuinely hyped about.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 (App Router) |
| Styling | Tailwind CSS v4 |
| Auth | Clerk |
| Backend / DB | Convex |
| Icons | Lucide React |
git clone https://github.com/your-username/HypeShelf.git
cd HypeShelf
npm installCreate a .env.local file in the project root:
# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
# Convex
NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud
CONVEX_DEPLOYMENT=your-deployment-nameAdmin email: Set
ADMIN_EMAILin your Convex dashboard → Settings → Environment Variables. The user with this email is auto-promoted to admin on sign-in.
npx convex devnpm run devOpen http://localhost:3000.
HypeShelf/
├── app/
│ ├── page.tsx # Landing page
│ ├── feed/page.tsx # Authenticated feed
│ ├── add/page.tsx # Add recommendation form
│ └── admin/page.tsx # Admin dashboard
├── components/
│ ├── Navbar.tsx
│ ├── Hero.tsx
│ ├── DashboardFeed.tsx
│ ├── RecommendationCard.tsx
│ ├── SignInBanner.tsx
│ ├── FAQ.tsx
│ ├── Footer.tsx
│ └── ui/
│ ├── button.tsx
│ └── toast.tsx # Custom toast notification system
├── convex/
│ ├── schema.ts # Database schema
│ ├── users.ts # User sync, role management
│ └── recommendations.ts # CRUD + admin actions
└── types/
└── index.ts # Shared TypeScript types (UserRole, Genre)
- 🔐 Authentication via Clerk (Google, email, etc.)
- 📬 Recommendations feed with genre + staff pick filters
- ⭐ Staff Picks — admins can badge notable recommendations
- 🛡️ Role-Based Access Control —
adminanduserroles enforced on the backend - 📱 Fully responsive — mobile hamburger menu, adaptive layouts
- 🚦 Rate limiting — max 10 posts/hour per user on the backend
- Set
ADMIN_EMAILin the Convex dashboard environment variables. - Sign in with that email — you'll be auto-promoted to admin.
- Access
/adminto manage users and roles.
npx convex deployPush to your connected GitHub repo. Vercel will auto-build and deploy.
Required Vercel env vars:
NEXT_PUBLIC_CONVEX_URLNEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYCONVEX_DEPLOYMENT
- All role checks are enforced server-side in Convex mutations — not just in the UI.
- Admins cannot demote themselves (backend guard in
updateRole). - The
createmutation is rate-limited to 10 posts/hour per user. - Protected routes enforced via
middleware.ts.
MIT