95 lines
3.8 KiB
Markdown
95 lines
3.8 KiB
Markdown
# recipe-site
|
|
[![Build Status](https://drone.bune.city/api/badges/lynnesbian/recipe-site/status.svg)](https://drone.bune.city/lynnesbian/recipe-site)
|
|
|
|
A simple static [Jekyll](https://jekyllrb.com) site for keeping track of recipes. This is my first major Jekyll project, so it might be a little messy. **This project is a work in progress.**
|
|
|
|
## Usage
|
|
Ensure that you have [Git](https://git-scm.org), [Ruby](https://www.ruby-lang.org) and [RubyGems](https://rubygems.org/) installed.
|
|
|
|
Assuming a Unix system:
|
|
```
|
|
$ git clone https://git.bune.city/lynnesbian/recipe-site
|
|
$ cd recipe-site
|
|
$ gem install bundler
|
|
$ bundle install
|
|
$ bundle exec jekyll build
|
|
```
|
|
This will compile the website into the `_site` directory, which you may serve with any HTTP server. It is necessary to re-run `bundle exec jekyll build` after any modifications.
|
|
|
|
Alternatively, you can use jekyll's built in server for testing:
|
|
```
|
|
$ bundle exec jekyll serve
|
|
```
|
|
_The built in server will automatically regenerate the `_site` output whenever you make a change._
|
|
|
|
However, there won't be much to look at until you add some recipes!
|
|
|
|
## Recipe file format
|
|
Recipes are found in `_recipes/`, with subrecipes located in `_subrecipes/`.
|
|
|
|
Here's an example recipe, which could be saved to `_recipes/chocolate_cake.yml`:
|
|
```yaml
|
|
---
|
|
name: Chocolate cake
|
|
author: Jane Crocker
|
|
layout: recipe
|
|
|
|
ingredients:
|
|
- [1, egg, null]
|
|
- [2, butter, sticks]
|
|
- [2, flour, cups]
|
|
# et cetera
|
|
method:
|
|
- Preheat the oven to 200°C
|
|
- Whisk the egg finely
|
|
# et cetera
|
|
time: 240
|
|
---
|
|
```
|
|
- `name` (string) - The displayed name of the recipe. Does not appear in the URL.
|
|
- `author` (string, optional) - The author of the recipe.
|
|
- `layout` (string) - The template to use; should always be `recipe`.
|
|
- `ingredients` (list) - Each entry in `ingredients` consists of an amount, ingredient name, and unit terminology. `[2, flour, cups]` is displayed as `2 cups of flour`, while `[1, egg, null]` is displayed as `1 egg`. The third field is optional - `[1, egg, null]` is the same as `[1, egg]`.
|
|
- `method` (list) - A list of steps undertaken to create the recipe, written in plain English. Or whatever language you prefer.
|
|
- `time` (string, optional) - The time it takes to make the recipe in minutes.
|
|
|
|
The recipe's file name isn't important, but it's good practice to make it something obvious, like `chocolate_cake.md` and not `strawberry_pie.md`.
|
|
|
|
The recipe files are standard YAML. The extension should always be `.md` - other extensions will cause issues with subrecipes (see #1).
|
|
|
|
### Subrecipes
|
|
Subrecipes behave a little differently to regular recipes:
|
|
- They don't show up on the home page
|
|
- The `time` tag is not supported
|
|
- `layout` should be `subrecipe`
|
|
|
|
Subrecipes have a tag that regular recipes do not - the `parents` tag. This is a list of recipes that the subrecipe should be included in. For example:
|
|
```yaml
|
|
---
|
|
name: Chocolate icing
|
|
parents:
|
|
- chocolate_cake
|
|
- chocolate_cupcakes
|
|
ingredients:
|
|
- [250, chocolate, grams]
|
|
# et cetera
|
|
---
|
|
```
|
|
The entries in `parents` refer to the filenames of the parent recipes - `chocolate_cake` refers to `chocolate_cake.md`.
|
|
|
|
If a subrecipe does not have at least one valid `parents` entry, it will not appear anywhere on the website.
|
|
|
|
### Licensing
|
|
This software is licensed under the [Apache 2.0 license](https://choosealicense.com/licenses/apache-2.0/).
|
|
|
|
Copyright 2020 Lynnesbian
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|