Api and Frontend to Manage your recipes. Written with Laravel and Vue.js.
Manage your families and friends recipes like a chef.
- 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.
- 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...
Get the latest release or clone the repo with
git clone https://git.narrenhaus.ch/Narrenhaus/Cookbook.git
- LAMP Stack/Docker (only for production)
- Requirements for laravel
- Composer
- NPM
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:
- 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
- If not already done, install everything
- Run the server
php artisan serve
- Watch for style and js changes:
npm run watch
- 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
- 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
- Follow Development deployment or Production deployment
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
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.
- Run static code analytics
composer run phpstan
- Run PHP Coding Standards Fixer
composer run php-cs-fixer
- laravel/laravel - A PHP framework for web artisans
- Askedio/laravel-soft-cascade - Cascade Delete & Restore when using Laravel SoftDeletes
- rutorika/sortable - Adds sortable behavior to Laravel Eloquent models
- GrKamil/laravel-telegram-logging - Send logs to Telegram chat via Telegram bot
- nunomaduro/larastan - Adds static analysis to Laravel improving developer productivity and code quality
- stechstudio/Laravel-PHP-CS-Fixer - Artisan Command for FriendsOfPHP/PHP-CS_Fixer
- barryvdh/laravel-translation-manager - Manage Laravel translation files
- laravel-ide-helper - Laravel IDE Helper
- sass/sass - Sass makes CSS fun!
- vuejs/vue - Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
- axios/axios - Promise based HTTP client for the browser and node.js
- SortableJS/Vue.Draggable - Vue drag-and-drop component based on Sortable.js
- PeachScript/vue-infinite-loading - An infinite scroll plugin for Vue.js.
- timtnleeProject/vuejs-clipper - Vue.js image clipping components using Vue-Rx.
- vuejs/vue-rx - RxJS integration for Vue.js.
- kirschbaum-development/laravel-translations-loader - Webpack loader to import Laravel translation files (PHP or JSON) into your JS bundle as JSON.
Please see CONTRIBUTING for details.
- Benjamin Ammann - Initial work - ammannbe
This project is licensed under the AGPLv3 or later - see the LICENSE file for details