A full-stack recipe recommendation app that helps you turn what you already have into meals reducing leftovers and potential food waste.
Track pantry ingredients, discover recipes with dietary filters, save favorites, build shopping lists, share your recipes, and connect with a community.
🚀 Quick start: Run with Docker · Manual setup
📄 Project documentation: Agile/Scrum (backlog, charter, and design document) live in docs/:
- Frontend: React, React Router, Redux Toolkit (redux-persist), MUI
- Backend: Node.js, Express, MongoDB (Mongoose), JWT + bcrypt, Nodemailer, node-cron
- APIs: Suggestic (GraphQL), Google Maps (JS API), Google Sign-In
- Dev/Infra: Docker Compose
- Google Sign-In: optional OAuth login alongside email/password.
- 2FA (email code): optional two-factor auth for additional account security.
- Pantry-first recipe discovery: search recipes by ingredients you already have.
- Saved recipes & folders: bookmark recipes and organize them into custom folders.
- Shopping list: turn recipes into an actionable grocery list.
- Grocery store finder: map view powered by Google Maps + Places.
- Community: create posts, comment/reply, and interact with other users.
- Auth flows: JWT auth + email confirmation + password reset (email provider required).
- Dietary preferences: filter results with common dietary restrictions/preferences (e.g., gluten-free, vegan, etc.).
- Direct messaging: one-to-one conversations inside the app.
- Automated reminders: optional scheduled email reminders (cron + email provider required).
preview.mov
Prereqs: Docker Desktop
- Clone the repository and enter into the new directory:
git clone https://github.com/kraisr/Recipe-Remix && cd Recipe-Remix- Create backend/.env:
- Get Suggestic API token here
MONGO_URL=your_mongo_url
JWT_SECRET=replace-with-a-long-random-string
GOOGLE_CLIENT_ID=your_google_oauth_client_id
GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret
GOOGLE_REFRESH_TOKEN=your_google_oauth_refresh_token
SUGGESTIC_TOKEN=your_suggestic_token
SUGGESTIC_USER_ID=your_suggestic_user_id
GIPHY_TOKEN=your_giphy_token- Start the full stack (frontend + backend + local MongoDB):
docker compose up --build- or if using Atlas:
docker compose -f docker-compose.atlas.yml up --build- Open:
-
Frontend: http://localhost:3000
-
Backend: http://localhost:8080
- Stop containers (keeps DB data):
docker compose down- Reset everything including local DB data:
docker compose down -v- Clone the repository and enter into the new directory:
git clone https://github.com/kraisr/Recipe-Remix && cd Recipe-Remix- Enter the backend directory and install dependencies:
cd backend && npm ci- Enter the frontend directory and install dependencies:
cd ../frontend && npm ci- Set environment variables:
- Create backend/.env (see template above)
- Start the apps:
- Terminal 1 (backend):
cd backend && npm start- Terminal 2 (frontend):
cd frontend && npm start- Open:
-
Frontend: http://localhost:3000
-
Backend: http://localhost:8080
