Go to file
2018-03-13 19:10:51 +01:00
build Fix build 2018-02-27 10:03:43 +01:00
config Better handling of URL prefix 2018-03-02 20:21:25 +01:00
cuizin Factor API calls 2018-03-13 19:02:10 +01:00
migrations Add some db migrations 2018-03-11 17:36:49 +01:00
screenshots Update home screenshot 2018-03-13 19:10:51 +01:00
.babelrc Fix build 2018-02-27 10:03:43 +01:00
.editorconfig Fix build 2018-02-27 10:03:43 +01:00
.eslintignore Fix build 2018-02-27 10:03:43 +01:00
.eslintrc.js Few UI improvements + add refetch ability 2018-03-03 15:56:18 +01:00
.gitignore Handle deletion of recipes 2018-02-28 22:06:21 +01:00
.postcssrc.js Fix build 2018-02-27 10:03:43 +01:00
LICENSE.txt Better doc 2018-03-01 21:54:33 +01:00
package.json Add i18n, fix #1 2018-03-06 18:29:37 +01:00
README.md Add screenshots 2018-03-13 19:09:16 +01:00
requirements.txt Handle deletion of recipes 2018-02-28 22:06:21 +01:00


Cuizin is a tool wrapping around Web Outside Of Browsers to help you sort and organize recipes you find online. You can also manually add new recipes.


More screenshots are available in the screenshots folder.


Cuizin requires Python 3 and may not be compatible with Python 2.

$ git clone …  # Clone this repository
$ pip3 install -r requirements.txt  # Install Python dependencies
$ npm install  # Install JS dependencies for the frontend
$ npm run build  # Build the JS dependencies

Ideally, Python dependencies should be installed in a virtual environment.

If you serve the app from a subdirectory (and not the root of your domain), you might want to run URL_PREFIX=/subdir/ npm run build instead of npm run build to use the correct path to call the API. Note that the trailing slash is important.


Run python -m cuizin to run the built-in webserver. Conversely, you can use WSGI to serve the application directly (application variable is exported in cuizin/__main__.py).

You can customize the behavior of the app by passing environment variables:

  • CUIZIN_HOST to set the host on which the webserver should listen to (defaults to localhost only). Use CUIZIN_HOST= to make it world-accessible.
  • CUIZIN_PORT to set the port on which the webserver should listen. Defaults to 8080.
  • CUIZIN_DEBUG to enable or disable the debug from Bottle (defaults to False).
  • WEBOOB_MODULES_PATH to set the path to the local clone of the Weboob modules. Default to using the weboob-modules package installed by pip (and which you should regularly update with pip install --upgrade weboob-modules).

If you serve the app with a reverse proxy, you should serve the content of cuizin/dist (static frontend files) directly, without passing it down to the Bottle webserver.


If you are updating the app, the database schema may have changed. There is a set of migrations under the migrations folder which is a set of standalone scripts to run to update your database schema. Each script is named after the commit it is handling.


All contributions are welcome, feel free to open a MR. Just in case, if you plan on working on some major new feature, please open an issue before to get some feedbacks.

All the code lies under cuizin directory. Frontend code lies under cuizin/js_src. build and config folders at the root of this repository are used for the frontend build.

Additionnally, you can use make dev to spawn a development webserver to serve the JS frontend and auto-update/auto-reload when you make changes. The spawned JS server will be set up at localhost:8081 and you should start the backend Python server at localhost:8080 with python -m cuizin along it. You can simply open the app at localhost:8081 and start developping, it will automatically call the API from the python -m cuizin process, on port 8080.


This software is released under an MIT License.