A full-stack web application for discovering, sharing, and managing recipes.
Built with a Node.js/Express backend and a Vue 3 frontend, the app offers authentication, recipe browsing (local DB + Spoonacular API), favorites management, and personal recipe creation.
- User Authentication – Register, log in, and log out with secure session-based authentication
- Recipe Browsing – Search, filter, and sort recipes from the local DB or the Spoonacular API
- Favorites & History – Save favorite recipes and view recently accessed dishes
- Personal & Family Recipes – Add your own recipes and explore curated family recipes
- Profile Management – View and update your personal information
- Docker Support – Backend includes a Dockerfile for easy containerized deployment
| Layer | Technologies |
|---|---|
| Frontend | Vue 3, Vue Router, Axios, Bootstrap 5, Vuelidate |
| Backend | Node.js, Express, bcryptjs, session cookies, PostgreSQL (mysql2, pg), Spoonacular API |
| Tooling | npm, Vue CLI, ESLint |
Recipe-Website/
├── backend/ # Express API, database access, authentication, Dockerfile
├── frontend/ # Vue 3 SPA for recipe browsing and user interaction
└── README.md # Project documentation
- Node.js ≥ 16 & npm ≥ 8
- A running MySQL or PostgreSQL database
- (Optional) Docker for backend deployment
cd backend
npm install
npm start # Runs on http://localhost:3000cd frontend
npm install
npm run serve # Runs on http://localhost:8080npm run buildcd backend
docker build -t recipe-api .
docker run -p 3000:3000 recipe-apiThe repository includes a GitHub Actions workflow that builds the Vue frontend and deploys it to GitHub Pages whenever changes are pushed to the main branch or the workflow is manually dispatched.
- Build – Installs frontend dependencies with
npm ciand runsnpm run build. - Publish – Uploads the contents of
frontend/distas a Pages artifact and deploys it usingactions/deploy-pages.
- Open Settings → Pages in your GitHub repository.
- Set Source to GitHub Actions.
- Trigger a push to
main(or use the Run workflow button) to publish the latest build.
POST /auth/register– Create a new userPOST /auth/login– Authenticate user and start sessionPOST /auth/logout– Destroy session
GET /recipes– List recipes with optional filtersGET /recipes/random– Get random recipesGET /recipes/viewed– Recently viewed recipesGET /recipes/myRecipes– User’s personal recipesPOST /recipes– Create a new recipe (auth required)
GET /users– List users (admin only)GET /user/favorites– Get favorite recipesPOST /user/favorites– Add recipe to favoritesGET /user/me– Get logged-in user profilePUT /user/me– Update user profile
- Authentication pages (register/login/logout)
- Recipe search, filtering, and sorting
- Display of random and family recipes
- Favorites & personal recipe management
- Responsive design with Bootstrap 5
Backend .env example:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=password
DB_NAME=recipes
BCRYPT_SALT_ROUNDS=10
SPOONACULAR_API_KEY=your_api_keyThis project currently has no license. Please add one before production use.
- Rom Sheynis
- Lioz Shor