v1.1.0 (28 March 2024)

v1.1.0 (28 March 2024)

Authentication

Account Registrations

It is now possible to disable account registrations. This is useful when you wish to avoid random people registering an account when the application is exposed to the internet.

To disable user accounts, set the server.noSignups option in the configuration file to true. For Docker users, set the RECIPYA_SERVER_NO_SIGNUPS environment variable to true.

You will be able to manage your users from the /admin dashboard.

Automatic Login

It is now possible to login automatically into the application. This is useful when user accounts are not needed.

To enable this feature, set the server.autologin option in the configuration file to true. For Docker users, set the RECIPYA_SERVER_AUTOLOGIN environment variable to true.

A default account will be created on application start when no account has been created yet. Its credentials are the following:

Cookies

Fixed an issue where the remember me cookie did not work.

Admin

An admin page accessible via the /admin endpoint has been started.

Cookbooks

Fixed an issue where the user could not access their cookbooks.

Fixed an issue where a cookbook without recipes could be downloaded.

The name of cookbooks is now automatically adjusted to title case. It is now not possible to create a cookbook named best breakfast when Best Breakfast exists because they have the same name.

Previously, the default recipes search mode was by name, meaning that your search query only searched the title field of the recipes. Now, you can choose either By name or Full search.

Data

Backups & Restore

Application data is now backed up automatically every third day. It is possible to restore a previous backup.

Please consult the features tour for more information.

Directory

The database has been moved from path/to/recipya/ to path/to/recipya/data/backup/database/. This change allows Docker users to persist the application’s data. Users do not have to take any action because the migration to the new folder is automatic on application startup.

Jobs

The unreferenced images cleanup job now avoids deleting referenced cookbook images.

Docker

Environment variables can now be passed through the docker run command and the docker-compose file.

Infrastructure

Added a .devcontainer development environment, which sets you up with everything needed to develop and run Recipya.

Upgraded the Go version from 1.21 to 1.22.

Updated all Go and NPM packages.

Recipes

Recipya Bookmarklet

The Recipya bookmarklet allows a user to run a JavaScript snippet from their browser that extracts a recipe from a webpage.

It’s for websites that both:

  • can’t be scraped via a server request, i.e. have something like captcha or bot detection
  • that have json+ld recipe script snippets on their page

To get the bookmarklet:

  1. Access /recipes/add
  2. Bookmark the Recipya Bookmarklet link in the Import card.

To use it:

  1. Open a recipe webpage, e.g. double banana nut bread
  2. Click the bookmarklet
  3. A JSON file is downloaded when it succeeds.

You can then import the extracted recipe from Add recipe -> Import.

Import

Text Files

It is now possible to import recipe text files in the .txt format. The text files should ideally be structured like the following:

Title

Description

Metadata, like prep time, cooking time, total time, servings etc.

Ingredients list
Quantity | Measurement unit | Ingredient | Possibly some instructions

Instructions

Possibly an URL where the recipe was taken from

Websites

Bulk import URLs is now possible. To do so, access the dialog from Add Recipe -> Website -> Fetch. In the text area, paste your list of URLs, each on a new line and press Submit.

Search

Search pagination has been implemented when searching for recipes and when searching for recipes to add to a cookbook.

You can now choose among the following search modes:

  • By name
  • Full search

The default is full search.

Sort

Recipes can now be sorted in the following ways:

  • By name:
    • From A to Z
    • From Z to A
  • By creation date:
    • From newest to oldest
    • From oldest to newest
  • Random

The default is by order of insertion into the database.

Reports

Reports are generated after importing recipes. They are accessible from the /reports endpoint. Please consult the features tour for more information.

Scraper

The scraper has been refreshed.

Added support for the following websites:

  • aberlehome.com
  • ah.nl
  • all-clad.com
  • argiro.gr
  • bergamot.app
  • bettybossi.ch
  • bingingwithbabish.com
  • brianlagerstrom.com
  • chuckycruz.substack.com
  • drinkoteket.se
  • foodbag.be
  • foodnetwork.com
  • francescakookt.nl
  • jaimyskitchen.nl
  • kuchynalidla.sk
  • lidl-kochen.de
  • leukerecepten.nl
  • livingthegreenlife.com
  • maangchi.com
  • marmiton.org
  • moulinex.fr
  • myjewishlearning.com
  • puurgezond.nl
  • quitoque.fr
  • recipescommunity.com.au
  • reddit.com
  • yumelise.fr

System

Memory Usage

Cut memory usage by half by removing the dependency on Boostport/mjml-go. During the profiling analysis of the heap, it was observed that the application retained an instance of the of wazero in memory. Recognizing this behavior as undesirable, the package has been removed. In its place, a build:mjml command was added to the package.json file to convert .mjml files to .gohtml during the build process.

Further reduce memory usage by approximately 10% by using templ instead of storing gohtml templates in memory.

UI/UX

The entire frontend has been revamped to accommodate any device and feature a cleaner, more beautiful design.

The recipe print layout has been improved.

Updater

The software can now self-update when an update is available. You will notice a notification icon next to your avatar when it’s time to update.