A smart recipe platform that helps you cook smarter, waste less, and connect with a community of food lovers.
🌐 Live App: senior-project-sigma-one.vercel.app
ChefItUp is a full-stack web application built as a senior capstone project. It helps users discover recipes based on ingredients they already have, track pantry inventory and expiration dates, set dietary preferences, and share recipes with a community. Businesses can also create accounts to showcase their menu items and connect with customers.
| Name | Role |
|---|---|
| Philippe Jean | Full-Stack / Lead |
| Antonio Villani | Backend / Comments System |
| Joseph Buchanan | Frontend / UI |
| Jared Mitchell | Frontend / Groups |
| Caleb Kim | Frontend / Social |
- Next.js 15 (App Router, TypeScript)
- Tailwind CSS with custom green theme
- Radix UI — 30+ accessible components
- React Hook Form + Zod — form validation
- Recharts — data visualization
- Lucide React — icons
- Sonner — toast notifications
- Node.js + Express.js
- Prisma ORM with PostgreSQL (Supabase)
- JWT authentication + bcryptjs password hashing
- Resend — transactional emails
- Multer — video/file uploads
- Frontend: Vercel
- Backend: Railway
- Database: Supabase (PostgreSQL)
- Storage: Supabase
- 🔐 JWT-based authentication with email verification
- 🧊 Pantry/fridge inventory with expiration tracking
- 🍽️ Smart recipe suggestions based on available ingredients
- 🚫 Dietary preferences, allergy filters, and dislike detection
- 📖 Community recipe feed (trending, new, following)
- 👥 Groups — create and join cooking communities
- ❤️ Likes, comments, replies, and saves
- 👤 Public profiles with followers/following
- 🔖 Favorites and liked recipes tabs
⚠️ Two-step allergy warning modal before viewing flagged recipes- 📬 Email notifications for verification, reports, and account actions
- 🏪 Separate business account type with admin approval
- 📋 Menu recipe publishing with category, price, and featured tags
- 🌐 Website link on every post
- 📊 Business dashboard with engagement metrics
- 🖊️ Edit and delete recipes from a dedicated management view
- 🛡️ Report system with severity levels (HIGH / LOW)
- ⚡ Strike system — warnings, posting suspension, deactivation
- ✅ Business account approval/rejection workflow
- 📧 Admin email notifications for all moderation events
SeniorProject/
├── frontend/ # Next.js app
│ ├── src/
│ │ ├── app/ # App Router pages
│ │ │ ├── dashboard/ # Fridge, pantry, recipe suggestions
│ │ │ ├── community/ # Recipe feed + groups
│ │ │ ├── recipes/[id]/ # Recipe detail page
│ │ │ ├── profile/ # User profiles
│ │ │ ├── groups/[id]/ # Group detail pages
│ │ │ ├── admin/ # Admin dashboard
│ │ │ ├── business/ # Business account pages
│ │ │ ├── login/
│ │ │ ├── register/
│ │ │ ├── settings/
│ │ │ ├── verify-email/
│ │ │ └── check-email/
│ │ ├── components/
│ │ │ ├── ui/ # Radix UI wrapped components
│ │ │ ├── dashboard/ # Dashboard-specific components
│ │ │ ├── social/ # Feed cards, follow button, comments
│ │ │ └── common/ # Shared components
│ │ └── lib/
│ │ ├── api.ts # All API calls (typed)
│ │ ├── social-data.ts # Mock data + social types
│ │ └── dashboard-data.ts
│ └── .env.local # Not committed
│
└── backend/ # Express API
├── src/
│ ├── routes/ # One file per resource
│ │ ├── auth.js
│ │ ├── posts.js
│ │ ├── comments.js
│ │ ├── pantry.js
│ │ ├── recipes.js
│ │ ├── users.js
│ │ ├── follow.js
│ │ ├── likes.js
│ │ ├── favorites.js
│ │ ├── groups.js
│ │ ├── reports.js
│ │ └── admin.js
│ ├── middleware/
│ │ ├── requireAuth.js
│ │ └── requireAdmin.js
│ ├── lib/
│ │ └── email.js # Resend email service
│ ├── db/
│ │ └── prisma.js
│ └── server.js
├── prisma/
│ └── schema.prisma
└── .env # Not committed
- Node.js 18+
- pnpm (frontend uses pnpm)
- npm (backend uses npm)
cd frontend
pnpm install
cp .env.local.example .env.local # fill in values
pnpm dev.env.local:
NEXT_PUBLIC_API_URL=http://localhost:5001
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_ADMIN_EMAIL=your@email.com
cd backend
npm install
cp .env.example .env # fill in values
npm run dev.env:
DATABASE_URL=postgresql://...
JWT_SECRET=your_secret
RESEND_API_KEY=re_...
APP_URL=http://localhost:3000
PORT=5001
ADMIN_EMAIL=your@email.com
BCRYPT_ROUNDS=10
| Service | Platform | URL |
|---|---|---|
| Frontend | Vercel | senior-project-sigma-one.vercel.app |
| Backend | Railway | seniorproject-production-a86e.up.railway.app |
| Database | Supabase | PostgreSQL (managed) |
Educational use only — Senior Capstone Project, 2025.
