CookTogether is a full-stack web application designed to be a modern, centralized platform for a community cooking club. It replaces the chaos of WhatsApp groups and Google Docs with a streamlined, feature-rich, and beautifully designed interface for sharing, discovering, and saving recipes.
This project was built from the ground up to solve the problem of a growing cooking community struggling to manage their recipes. The platform provides a robust backend API built with Node.js/Express and a dynamic, fully responsive frontend built with React and Vite. It features a complete authentication system, advanced recipe filtering, and a polished UI/UX with modern animations and a dark mode.
- React + Vite: A modern, fast, and powerful frontend framework for building dynamic user interfaces with TypeScript.
- Tailwind CSS: A utility-first CSS framework for rapid and responsive UI development.
- shadcn/ui: A collection of beautifully designed and accessible UI components.
- Magic UI: A library of animated components for creating a delightful user experience.
- Zustand: A small, fast, and scalable state management solution.
- Axios: A promise-based HTTP client for making API requests.
- React Hook Form & Zod: A powerful combination for robust and type-safe form validation.
- Firebase Client SDK: For handling client-side user authentication.
- Node.js & Express: A fast and scalable JavaScript runtime and web framework for building the REST API.
- MongoDB & Mongoose: A NoSQL database and Object Data Modeling (ODM) library for data persistence.
- Firebase Admin SDK: For verifying user authentication tokens on the server.
- JSON Web Tokens (JWT): Used within the authentication flow (though primarily managed by Firebase).
- Joi: An object schema validation library for securing API endpoints.
- Full Authentication: Secure user registration and login.
- Recipe Management: Users can create, view, and rate recipes.
- Advanced Filtering & Sorting:
- Live search by recipe title or ingredients.
- Filter by minimum rating, maximum prep time, and maximum cook time.
- Sort recipes by "Latest" or "Trending" (based on ratings).
- Saved Recipes: Users can bookmark their favorite recipes to a personal collection.
- Interactive UI:
- Animated theme toggler, typing animations, and magic cards for a modern feel.
- "Add Recipe" form presented in a professional, scrollable dialog.
- Fully Responsive Design: A seamless experience on all devices, from mobile phones to desktops.
- Mobile-First UX:
- Dedicated mobile navigation with a slide-out sheet.
- Responsive filter drawer for an intuitive mobile experience.
- Status Pages: Custom pages for loading states and 404 Not Found errors.
Note: The screenshots below are full-page scrolling captures designed to showcase the entire page layout, not to represent a single screen size.
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
| Desktop View(Authenticated) | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Desktop View | Mobile View |
|---|---|
![]() |
![]() |
| Filter Trigger | Navigation Sheet |
|---|---|
![]() |
![]() |
Follow these instructions to get the project up and running on your local machine for development and testing purposes.
For ease of testing, a pre-configured .env file is included already in both backend and frontend directories.
You will need the following software installed on your machine:
- Node.js (v18.x or later recommended)
- npm (or yarn/pnpm)
- MongoDB (either a local instance or a cloud-based service like MongoDB Atlas)
-
Navigate to the backend directory:
cd cooktogether-backend -
Install dependencies:
npm install
-
Set up environment variables:
- Create a copy of the example environment file: copy
.env.exampleto.env. - Fill in the required values in the
.envfile, such as your MongoDB connection string and Firebase service account details.
- Create a copy of the example environment file: copy
-
Start the server:
npm start
The backend server will be running on the port specified in your
.envfile (e.g.,http://localhost:3000).
-
Navigate to the frontend directory:
cd cooktogether-frontend -
Install dependencies:
npm install
-
Set up environment variables:
- Create a copy of the example environment file: copy
.env.exampleto.env. - Fill in your Firebase client SDK configuration keys in the
.envfile.
- Create a copy of the example environment file: copy
-
Start the development server:
npm run dev
The application will be available at
http://localhost:5173(or another port if 5173 is in use).

















