Skip to content

ammannbe/RecipeManagerApi

7.x
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

RecipeManager

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

A tool to manage your families and friends recipes like a chef.

Recipes Overview

Why is this so awesome?

  • Manage 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
  • Improve and add advanced searching and filtering
  • An advanced User-Role-System
  • Import & more export types of recipes
  • Nutrition informations
  • Rating system (the API code is already written ;-) )
  • Social login with Socialite
  • A feature you think is missing...

Getting Started

Get the latest release or clone the repo with

git clone https://github.com/ammannbe/RecipeManager.git

Prerequisites

  • LAMP Stack or Docker for production use
  • Requirements for laravel
  • GD and WebP for image manipulation
  • Composer
  • NPM
  • MeiliSearch
  • Redis (optional but not recommended)

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 storage symlink php artisan storage:link
  • Generate an app key php artisan key:generate
  • Migrate the database php artisan migrate
  • Import meilisearch indexes php artisan scout:index recipes && php artisan scout:import "App\Models\Recipes\Recipe"
  • 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
  • Run the queue worker php artisan queue:work
  • 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
  • Run the queue worker php artisan queue:work (or setup via e.g. systemd)
  • Optimize npm packages: npm run prod

Update

  • Get the latest source (see Getting Started)
  • Check .env.examples for changes
  • Optimize composer autoload composer install
  • Install NPM packages npm install
  • Migrate the database php artisan migrate
  • Import meilisearch indexes php artisan scout:index recipes && php artisan scout:import "App\Models\Recipes\Recipe"
  • Follow Development deployment or Production deployment

Translations

All application related files are translated with laravel-translation-manager and laravel-translations-loader.

You should run these commands only on a development machine.

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 run 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 run 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

  • Optional: seed the database with test data
# Seed the database with test data
php artisan db:seed

# Freshly migrate and seed the database
php artisan migrate:fresh --seed

# The secret of the seeded users is 'password'
  • Run static code analytics composer run phpstan
  • Run PHP Coding Standards Fixer composer run php-cs-fixer

Built With

PHP Production:

PHP Development:

JS:

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