Learn stack-based computing through French culinary metaphors.
Cuisine Code is an educational game that teaches programming concepts through the familiar and engaging world of French cuisine. By representing computational operations as cooking techniques, the game makes abstract concepts tangible and intuitive.
- Stack-Based Operations: Learn fundamental computing concepts through cooking operations
- French Culinary Focus: Master authentic techniques from mirepoix to mother sauces
- Visual Feedback: See your stack operations through beautiful culinary visualizations
- Progressive Learning: Advance from simple preparations to complex recipes
- Social Cooking: Share recipes and cook collaboratively with friends (v4.0)
- Cross-Platform: Play in your terminal or browser
# Clone the repository
git clone https://github.com/defrecord/cuisine-code.git
cd cuisine-code
# Install dependencies
make deps
# Build the project
make all
# Start the development server
make serve
Visit http://localhost:3000
in your browser to start cooking!
;; Create a new kitchen
(define kitchen (make-kitchen))
;; Push ingredients onto the stack
(kitchen 'push "butter")
(kitchen 'push "herbs")
;; Apply transformations
(kitchen 'transform 'chop '((style . 'fine)))
;; See what's on the stack
(kitchen 'stack) ;; => ("fine-chopped-herbs" "butter")
;; Apply more transformations
(kitchen 'transform 'combine)
;; => ("combined-butter-and-fine-chopped-herbs")
Cuisine Code is built with a focus on functional programming principles using Scheme as its core language. The project structure follows a modular design:
cuisine-code/
├── scheme/ # Scheme source code
├── web/ # Web interface
├── c-output/ # C compilation output
├── tools/ # Development tools
├── docs/ # Documentation
├── scripts/ # Utility scripts
└── config/ # Configuration files
- Guile Scheme - Core programming language
- Emscripten - WebAssembly compilation
- Node.js - Web development
- PostgreSQL - Database
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- The French culinary tradition for its rich techniques and vocabulary
- Forth and other stack-based languages for inspiration
- The FreeBSD community for support and infrastructure
- All contributors who have helped shape the project