README.md

# Mascarpone 🧀

**Interactive CLI tool for scaffolding Tiramisu game projects**

Named after the Italian cream cheese used in tiramisu, Mascarpone provides a delightful TUI experience for creating new game projects with the Tiramisu game engine.

## Installation

```bash
gleam add --dev mascarpone
```

## Usage

Run the interactive project creator:

```bash
gleam run -m mascarpone
```

The TUI will guide you through:

1. **Lustre Integration**: Choose whether to include Lustre for UI overlays (menus, HUDs, etc.)
2. **Project Template** (Optional): Select from:
   - **2D Game** - Orthographic camera and sprite setup
   - **3D Game** - Perspective camera with lighting
   - **Physics Demo** - Physics-enabled objects
   - **Skip** - Don't create template files (for existing projects)
3. **Desktop Bundle**: Set up NW.js for desktop distribution

## What It Creates

Mascarpone sets up your Tiramisu project with:

- Lustre dev tools installed to `priv/<project-name>/` with bundled Bun runtime
- `gleam.toml` with all necessary dependencies (tiramisu, vec, lustre_dev_tools, optionally lustre)
- `.gitignore` for Gleam projects
- `package.json` and `node_modules/` with Three.js and Rapier3D installed via Bun
- Main source file with a working game example (if template selected)
- Lustre dev tools configuration with Three.js and Rapier3D import maps
- Desktop bundling with NW.js (if selected):
  - `nwjs-sdk/` - NW.js SDK for your current platform
  - `dist/linux/`, `dist/windows/`, `dist/macos/` - Platform-specific distributions
  - Updated `package.json` with NW.js application configuration


## Features

- 🎨 Beautiful TUI powered by [Shore](https://hexdocs.pm/shore/)
- 🚀 Quick project setup with sensible defaults
- 🎮 Multiple game templates to start from (optional)
- 📦 Automatic dependency management via `gleam add`
- 🖥️ Desktop bundling with NW.js for cross-platform distribution
- ⚙️ Configurable options for Lustre UI and Rapier3D physics
- ♻️ Can be run on existing projects to add NW.js support

## After Creation

### For Web Development

Run the dev server:

```bash
gleam run -m lustre/dev start
```

Then open http://localhost:1234 in your browser to see your game!

### For Desktop Development (if NW.js bundling was selected)

1. Build your project:
```bash
gleam build --target javascript
```

2. Run with NW.js SDK:
```bash
./nwjs-sdk/nwjs/nw .
```

3. Distribute your game using the platform-specific builds in `dist/linux/`, `dist/windows/`, and `dist/macos/`

## Using Mascarpone with Existing Projects

⚠️ **Important**: If you're adding NW.js support to an existing project, make sure to **skip the template selection** when prompted. Selecting a template will overwrite your existing game code in `src/`!


## License

MIT

## Related

- [Tiramisu](https://github.com/renatillas/tiramisu) - Gleam 3D game engine
- [Shore](https://hexdocs.pm/shore/) - Terminal UI framework for Gleam