- Add Roux.Server: WAI application using wai+warp directly
- Scans .cook files from recipe directory on startup
- GET / → HTML index page listing all recipes
- Other routes → 404
- Add Roux.RecipeIndex: directory scanning and recipe parsing
- scanRecipes: lists .cook files, parses each, extracts titles
- Falls back to filename when metadata title is absent
- Add Roux.Html: blaze-html rendering with Pico CSS
- indexPage: renders recipe list with links
- urlEncode: percent-encodes filenames for URLs
- Update Roux.hs: re-exports Server.app and Types
- Add filepath to dependencies
- Create Roux.Parser with parseCookFile (splits paragraphs, treats
each as a plain-text step, no metadata parsing yet)
- Add emptyMetadata to Roux.Types for convenience
- Add test dependencies: hspec, tasty-golden, tasty-hspec
- Add ParserSpec with 4 tests covering single step, multiple steps,
empty input, and whitespace trimming
- Wire ParserSpec into test runner via tasty-hspec