jbrechtel 460b7d0fdc
Build and Deploy / build-and-deploy (push) Successful in 2m43s
Store cook log DB in writable data dir, not read-only recipes mount
The cook log SQLite DB was created at recipeDir/cook-log.db. In the Docker
deployment /recipes is mounted read-only, so SQLite could never create the
file there — the cook log has never worked in the container. The writable
/data volume was mounted but unused.

- initDb now creates the DB's parent directory if missing, so startup
  initialization is self-contained and idempotent.
- app takes a dataDir and places cook-log.db there.
- Add optional --data-dir flag (defaults to the recipe dir, preserving
  local-dev behavior); Docker CMD passes --data-dir /data.

Verified end-to-end as root against a read-only recipe dir and a
non-existent data dir: the dir and DB are created and cook-log POST/GET
round-trips.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 21:53:35 -04:00
2026-05-19 23:05:58 -04:00
2026-05-21 21:29:34 -04:00
2026-05-31 14:48:32 -04:00
2026-05-19 07:25:59 -04:00
2026-05-27 21:31:00 -04:00

Roux

Roux is a personal/family recipe management site.

It's intended to be low friction for entering recipes and tracking when you've cooked them.

Cooklang

Roux uses Cooklang (https://cooklang.org/) as a source of truth for all recipe content. Any recipe either starts in Cooklang or is immediately converted to Cooklang by one mechanism or another.

Other details

Cook history

Roux lets you track when you cook recipes. I like this because we cook a lot of different recipes and I like to be able to go back to find things I liked in the past so I don't forget about them.

Technical details

Development environment

Docker is used for all development tools. Nothing is required to be installed on the local machine except Docker.

Backend API: Haskell + SQLite

Frontend: Static HTML + Pico CSS

The actual backing for recipes themselves is a single cooklang directory with an in-process search index that gets rebuilt whenever a file is added to the directory.

Project structure:

cooklang-hs

A Cooklang parser written in Haskell.

roux-server

The webserver for Roux. Parses Cooklang files on disk, indexes them, renders HTML templates for presenting recipes.

S
Description
A recipe management site
Readme 1.8 MiB
Languages
HTML 82.5%
Haskell 15.7%
Python 1%
Shell 0.4%
Cooklang 0.3%
Other 0.1%