Skip to content

Repository files navigation

chefitup_weblogo

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


What is ChefItUp?

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.


Team

NameRole
Philippe JeanFull-Stack / Lead
Antonio VillaniBackend / Comments System
Joseph BuchananFrontend / UI
Jared MitchellFrontend / Groups
Caleb KimFrontend / Social

Tech Stack

Frontend

  • 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

Backend

  • Node.js + Express.js
  • Prisma ORM with PostgreSQL (Supabase)
  • JWT authentication + bcryptjs password hashing
  • Resend — transactional emails
  • Multer — video/file uploads

Infrastructure

  • Frontend: Vercel
  • Backend: Railway
  • Database: Supabase (PostgreSQL)
  • Storage: Supabase

Features

For Users

  • 🔐 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

For Businesses

  • 🏪 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

For Admins

  • 🛡️ 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

Project Structure

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

Local Development

Prerequisites

  • Node.js 18+
  • pnpm (frontend uses pnpm)
  • npm (backend uses npm)

Frontend

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

Backend

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

Deployment

ServicePlatformURL
FrontendVercelsenior-project-sigma-one.vercel.app
BackendRailwayseniorproject-production-a86e.up.railway.app
DatabaseSupabasePostgreSQL (managed)

License

Educational use only — Senior Capstone Project, 2025.

About

A web and mobile application that suggests recipes based on available ingredients in your fridge. Users can log in to their account, manage their ingredient inventory, track expiration dates, and set dietary restrictions/allergies. The app intelligently matches available ingredients to recipes while filtering out options that don't fit the user.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages