v0.1.0 documentation

This commit is contained in:
Hayden 2021-01-17 10:51:08 -09:00
commit 1684753b89
7 changed files with 88 additions and 99 deletions

View file

@ -7,10 +7,12 @@
- Fixed Images saved with no way to delete when add recipe via URL fails - Closes Issue #43 - Fixed Images saved with no way to delete when add recipe via URL fails - Closes Issue #43
### Features ### Features
- Additional database! SQlite is now supported! Closes #48 - Improved deployment documentation
- Additional database! SQlite is now supported! - Closes #48
- All site data is now backed up. - All site data is now backed up.
- Support for Prep Time, Total Time, and Cook Time field - Closes #63 - Support for Prep Time, Total Time, and Cook Time field - Closes #63
- New backup import process with support for themes and site settings - New backup import process with support for themes and site settings
- **BETA** ARM support! - Closes #69
### Code / Developer Improvements ### Code / Developer Improvements
- Unified Database Access Layers - Unified Database Access Layers

View file

@ -1,41 +1,46 @@
# Installation # Installation
To deploy docker on your local network it is highly recommended to use docker to deploy the image straight from dockerhub. Using the docker-compose below you should be able to get a stack up and running easily by changing a few default values and deploying. Currently the only supported database is Mongo. Mealie is looking for contributors to support additional databases. To deploy docker on your local network it is highly recommended to use docker to deploy the image straight from dockerhub. Using the docker-compose below you should be able to get a stack up and running easily by changing a few default values and deploying. Currently MongoDB and SQLite are supported. MongoDB support will be dropped in v0.2.0 so it is recommended to go with SQLite for new deployments. Postrgres support is planned for the next release, however for most loads you may find SQLite performant enough.
[Get Docker](https://docs.docker.com/get-docker/) [Get Docker](https://docs.docker.com/get-docker/)
[Mealie Docker Image](https://hub.docker.com/r/hkotel/mealie) [Mealie Docker Image](https://hub.docker.com/r/hkotel/mealie)
## Env Variables
| Variables | default | description | ## Quick Start - Docker CLI
| -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | Deployment with the Docker CLI can be done with `docker run` and specify the database type, in this case `sqlite`, setting the exposed port `9000`, mounting the current directory, and pull the latest image. After the image is up an running you can navigate to http://your.ip.addres:9000 and you'll should see mealie up and running!
| mealie_db_name | mealie | The name of the database to be created in Mongodb |
| mealie_port | 9000 | The port exposed by mealie. **do not change this if you're running in docker** If you'd like to use another port, map 9000 to another port of the host. |
| db_username | root | The Mongodb username you specified in your mongo container |
| db_password | example | The Mongodb password you specified in your mongo container |
| db_host | mongo | The host address of MongoDB if you're in docker and using the same network you can use mongo as the host name |
| db_port | 27017 | the port to access MongoDB 27017 is the default for mongo |
| api_docs | True | Turns on/off access to the API documentation locally. |
| TZ | | You should set your time zone accordingly so the date/time features work correctly |
## Docker CLI
```shell ```shell
docker container run \ docker run \
-e db_type='sql' \ -e db_type='sqlite' \
-p 9000:80 \ -p 9000:80 \
-v `pwd`:'/app/data/' \ -v `pwd`:'/app/data/' \
hkotel/mealie:dev hkotel/mealie:latest
``` ```
```shell ## Docker Compose with SQLite
Deployment with docker-compose is the recommended method for deployment. The example below will create an instance of mealie available on port `9000` with the data volume mounted from the local directory. To use, create a docker-compose.yml file, paste the contents below and save. In the terminal run `docker-compose up -d` to start the container.
```yaml
version: "3.1"
services:
mealie:
container_name: mealie
image: hkotel/mealie:latest
restart: always
ports:
- 9000:80
environment:
db_type: sqlite
TZ: America/Anchorage
volumes:
- ./mealie/data/:/app/data
``` ```
## Docker Compose ## Docker Compose with Mongo - DEPRECIATED
```yaml ```yaml
# docker-compose.yml # docker-compose.yml
@ -76,55 +81,21 @@ services:
``` ```
## Ansible Tasks Template
```yaml ## Env Variables
- name: ensures Mealie directory dir exists
file:
path: "{{ docker_dir }}/mealie/"
state: directory
owner: "{{ main_user}}"
group: "{{ main_group }}"
- name: ensures Mealie directory dir exists | Variables | default | description |
file: | -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
path: "{{ docker_dir }}/mealie/" | db_type | sqlite | The database type to be used. Current Options 'sqlite' and 'mongo' |
state: directory | mealie_db_name | mealie | The name of the database to be created in Mongodb |
owner: "{{ main_user}}" | mealie_port | 9000 | The port exposed by mealie. **do not change this if you're running in docker** If you'd like to use another port, map 9000 to another port of the host. |
group: "{{ main_group }}" | db_username | root | The Mongodb username you specified in your mongo container |
| db_password | example | The Mongodb password you specified in your mongo container |
| db_host | mongo | The host address of MongoDB if you're in docker and using the same network you can use mongo as the host name |
| db_port | 27017 | the port to access MongoDB 27017 is the default for mongo |
| api_docs | True | Turns on/off access to the API documentation locally. |
| TZ | | You should set your time zone accordingly so the date/time features work correctly |
- name: Deploy Monogo Database
docker_container:
name: mealie-mongo
image: mongo
restart_policy: unless-stopped
networks:
- name: web
env:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
- name: deploy Mealie Docker Container
docker_container:
name: mealie
image: hkotel/mealie:latest
restart_policy: unless-stopped
ports:
- 9090:9000
networks:
- name: web
mounts:
- type: bind
source: "{{ docker_dir }}/mealie"
target: /app/data
env:
db_username: root
db_password: example
db_host: mealie-mongo
db_port: "27017"
```
## Deployed as a Python Application ## Deployed as a Python Application
Alternatively, this project is built on Python and Mongodb. If you are dead set on deploying on a linux machine you can run this in an python environment with a dedicated MongoDatabase. Provided that you know thats how you want to host the application, I'll assume you know how to do that. I may or may not get around to writing this guide. I'm open to pull requests if anyone has a good guide on it. Alternatively, this project is built on Python and Mongodb. If you are dead set on deploying on a linux machine you can run this in an python environment with a dedicated MongoDatabase. Provided that you know thats how you want to host the application, I'll assume you know how to do that. I may or may not get around to writing this guide. I'm open to pull requests if anyone has a good guide on it.

View file

@ -6,7 +6,21 @@ In the Admin page on the in the Migration section you can provide a URL for a re
We'd like to support additional migration paths. [See open issues.](https://github.com/hay-kot/mealie/issues) We'd like to support additional migration paths. [See open issues.](https://github.com/hay-kot/mealie/issues)
**Currently Proposed Are:** ### Nextcloud Recipes
Nextcloud recipes can be imported from either a zip file the contains the data stored in Nextcloud. The zip file can be uploaded from the frontend or placed in the data/migrations/Nextcloud directory. See the example folder structure below to ensure your recipes are able to be imported.
- NextCloud Recipes ```
nextcloud_recipes.zip
├── recipe_1
│ ├── recipe.json
│ ├── full.jpg
│ └── thumb.jpg
├── recipe_2
│ ├── recipe.json
│ └── full.jpg
└── recipe_3
└── recipe.json
```
**Currently Proposed Are:**
- Open Eats - Open Eats

File diff suppressed because one or more lines are too long

View file

@ -1,12 +1,12 @@
# Development Road Map # Development Road Map
!!! Current Release !!! Current Release
v0.0.0 ALPHA - This is technically a pre-release, as such there are no release notes and no version. The first version will be version v0.1.0 and will provide a list of release notes with any breaking changes v0.1.0 BETA - This is technically a pre-release, as such take care to backup data and be aware that breaking changes in future releases are a real possibility.
Feature placement is not set in stone. This is much more of a guideline than anything else. Feature placement is not set in stone. This is much more of a guideline than anything else.
## v1.0 Road Map ## v x.x.x - No planned target, but eventually...
### Frontend ### Frontend
- [ ] Login / Logout Navigation - [ ] Login / Logout Navigation
@ -14,6 +14,7 @@ Feature placement is not set in stone. This is much more of a guideline than any
* [ ] Logic / Function Calls * [ ] Logic / Function Calls
* [ ] Password Reset * [ ] Password Reset
### Backend ### Backend
- [ ] Image Minification
- [ ] User Setup - [ ] User Setup
* [ ] Authentication * [ ] Authentication
* [ ] Default Admin/Superuser Account * [ ] Default Admin/Superuser Account
@ -21,25 +22,31 @@ Feature placement is not set in stone. This is much more of a guideline than any
* [ ] User Accounts * [ ] User Accounts
* [ ] Edit / Delete * [ ] Edit / Delete
## v0.1.0 ## v0.2.0 - Targets
### Front End
- [ ] Recipe Editor
* [ ] Basic Form Validation
- [ ] Recipe Viewer
* [ ] Print Page View - Like King Arthur Website
* [ ] Total Time Indicator
* [ ] Bake Time
!!! error "MAJOR BREAKING CHANGE"
MongoDB will no longer be supported as of v0.2.0. Review the database migration page for details on migration to SQL (It's very easy)
## New Features
### Frontend
- [ ] Advanced search
- [ ] Category Filter
- [ ] Tag Filter
- [x] Fuzzy Search
- [ ] Backup card redesign
- [ ] Additional Backup / Import Features
- [ ] Import Recipes Force/Rebase options
- [ ] Upload .zip file
- [ ] Improved Color Picker
- [ ] Meal Plan redesign
### Backend ### Backend
- [ ] Recipe Data - [ ] PostgreSQL Support
* [x] Better Scraper - [ ] Setup SQL Migrations
* [ ] Image Minification
* [x] Scraper Data Validation ## Breaking Changes
- [ ] Category Management - Internal port 9000 changed to port 80 for better Traefik support
* [ ] Lunch / Dinner / Breakfast <- Meal Generation - MongoDB support dropped
* [ ] Dessert / Side / Appetizer / Bread / Drinks / ## Code Chores
- [ ] Backup Options - [ ] Remove MongoDB Interface Code
* [ ] Force Update - [ ] Dockerfile Trim
* [ ] Rebuild

View file

@ -52,8 +52,8 @@ else:
# DATABASE ENV # DATABASE ENV
DATABASE_TYPE = os.getenv("db_type", "sql") # mongo, tinydb DATABASE_TYPE = os.getenv("db_type", "sqlite") # mongo, sqlite
if DATABASE_TYPE == "sql": if DATABASE_TYPE == "sqlite":
USE_SQL = True USE_SQL = True
USE_MONGO = False USE_MONGO = False
SQLITE_FILE = SQLITE_DIR.joinpath("mealie.sqlite") SQLITE_FILE = SQLITE_DIR.joinpath("mealie.sqlite")

View file

@ -4,9 +4,9 @@ import zipfile
from pathlib import Path from pathlib import Path
from typing import List from typing import List
from app_config import BACKUP_DIR, IMG_DIR, TEMP_DIR
from services.recipe_services import Recipe from services.recipe_services import Recipe
from services.settings_services import SiteSettings, SiteTheme from services.settings_services import SiteSettings, SiteTheme
from app_config import BACKUP_DIR, IMG_DIR, TEMP_DIR
from utils.logger import logger from utils.logger import logger
@ -73,11 +73,6 @@ class ImportDatabase:
with open(recipe, "r") as f: with open(recipe, "r") as f:
recipe_dict = json.loads(f.read()) recipe_dict = json.loads(f.read())
recipe_dict = ImportDatabase._recipe_migration(recipe_dict) recipe_dict = ImportDatabase._recipe_migration(recipe_dict)
recipe_obj = Recipe(**recipe_dict)
recipe_obj.save_to_db()
successful_imports.append(recipe.stem)
logger.info(f"Imported: {recipe.stem}")
try: try:
recipe_obj = Recipe(**recipe_dict) recipe_obj = Recipe(**recipe_dict)
recipe_obj.save_to_db() recipe_obj.save_to_db()