/RecipeManager

Cookbook Webapp to manage your recipes like a chef

Primary LanguagePHPGNU Affero General Public License v3.0AGPL-3.0

RecipeManager

Api and Frontend to Manage your recipes. Written with Laravel and Vue.js.

Manage your families and friends recipes like a chef.


Comming from an older version? Check out the migration guide from the 5.x branch.


Recipes Overview

Why is this so awesome?

  • Manager your recipes You and your friends can save, edit and delete recipes.
  • Share recipes You can share recipes by one click via Telegram or E-Mail.
  • Calculate yield amounts Calculate yield amounts directly in the recipe on the fly.
  • Exactly define recipe properties ..like author, category, tags, ingredients, units and more.
  • Disable/Enable functionalities Disable or enable dynamically cookbooks and/or tags.
  • Great and easy API Access the easy-to-use REST-API.

What features are planned?

  • Unit and feature tests
  • Better support for photos (creating thumbnails, convert them to WEBP)
  • Improve and add advanced searching and filtering
  • An installer
  • An advanced User-Role-System
  • Import & more export types of recipes
  • Nutrition informations
  • Rating system (the API code is already written ;-) )
  • And a lot more...

Getting Started

Get the latest release or clone the repo with

git clone https://git.narrenhaus.ch/Narrenhaus/Cookbook.git

Prerequisites

  • LAMP Stack/Docker (only for production)
  • Requirements for laravel
  • Composer
  • NPM

Installation

It's recommended to install and update this software with docker/docker-compose. See here for more information.

Alternatively or for development purposes you can make a manual installation on any linux/unix machine:

Manual installation

  • Install composer packages composer install
  • Install NPM packages npm install
  • Copy .env.example to .env and modify it to your needs
  • Generate an app key php artisan key:generate
  • Migrate the database php artisan migrate
  • Add following to your crontab:
  *  *  *  *  *  www-data   cd /path-to-the-project && php artisan schedule:run >> /dev/null 2>&1
  • Run the server php artisan serve

Manual development deployment

  • If not already done, install everything
  • Run the server php artisan serve
  • Watch for style and js changes: npm run watch

Manual production deployment

  • If not already done, install everything
  • Optimize composer autoload composer install --optimize-autoloader --no-dev
  • Enable caching:
php artisan config:cache
php artisan route:cache
php artisan view:cache
  • Optimize npm packages: npm run prod

Update

Translations

All application related files are translated with laravel-translation-manager and laravel-vue-i18n-generator. Translations should only be done on development.

You need to run the migrations for this package:

php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=migrations
php artisan migrate
  • Import translations composer translations:import
  • Open <your-domain>/translations in a browser
  • PHP: short keys within resources/lang/<lang>/<group>.php
  • Vue.js: translation strings within /resources/lang/<lang>.json (these files will be imported into the _json group)
  • Export & generate translations composer translations:export

Other commands:

  • Export translations php artisan translations:export \*
  • Reset translations php artisan translations:reset

IDE helpers

You get better IDE IntelliSense support with the laravel-ide-helper package.

You need to generate the helpers by yourself:

composer run ide-helper:generate

After that, you should run the commands from Testing / Code Quality.

Testing / Code Quality

  • Run static code analytics composer run phpstan
  • Run PHP Coding Standards Fixer composer run php-cs-fixer

Built With

Contributing

Please see CONTRIBUTING for details.

Authors

  • Benjamin Ammann - Initial work - ammannbe

License

This project is licensed under the AGPLv3 or later - see the LICENSE file for details

Gallery

Recipes Overview - Mobile Account - Mobile Recipe - Mobile