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:
- email: admin@autologin.com
- password: admin
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:
- Access
/recipes/add
- Bookmark the
Recipya Bookmarklet
link in theImport
card.
To use it:
- Open a recipe webpage, e.g. double banana nut bread
- Click the bookmarklet
- 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.