Foodies is a full-featured platform for culinary enthusiasts, empowering users to discover, create, save, and share delicious recipes. Whether you're a home cook or a professional chef, Foodies brings the culinary community together.
Foodies consists of two decoupled applications — a RESTful API backend and a responsive single-page frontend — designed to deliver an intuitive and engaging user experience.
The platform is structured into two separate repositories:
backend/
– REST API server with authentication, PostgreSQL database, and media uploadsfrontend/
– Modern SPA with intuitive UI, animations, and responsive design
- 🔍 Search recipes by categories, ingredients, or regional cuisine
- 📸 Create custom recipes with step-by-step instructions and image uploads
- ⭐ Save favorites and follow other users
- 🧑🤝🧑 Engage with a cooking community
- 📱 Mobile-first responsive design for seamless experience on any device
- Language: Node.js (ESM modules)
- Framework: Express
- Database: PostgreSQL + Sequelize ORM
- Auth: JWT-based authentication
- Validation: Joi
- Image Upload: Multer + Cloudinary
- Email: Nodemailer
- Docs: Swagger (swagger-jsdoc + swagger-ui-express)
- Other: bcrypt, gravatar, chalk, nanoid, dotenv, morgan, cors
- Framework: React 19 + React DOM
- State Management: Redux Toolkit
- Routing: React Router DOM v7
- Forms & Validation: React Hook Form, Formik, Yup, @hookform/resolvers
- HTTP Client: Axios
- Styling: CSS Modules, Modern Normalize, clsx
- UX/UI Enhancements:
- Animations: Framer Motion
- Toasts: React Hot Toast
- Loaders: React Spinners
- Pagination: React Paginate
- Scroll UX: React Scroll To Top
- Carousels: React Slick, Swiper
- Build Tool: Vite
- Linting: ESLint, ESLint plugins for React and Hooks
- Utilities: Vite Plugin Remove Console
- Frontend Deployment: Vercel
- Backend Deployment: Render
- Media Storage: Cloudinary
- Version Control: Git + GitHub
Refer to the specific README files to set up and run each part of the application: