Metadata-Version: 2.4
Name: decksmith
Version: 0.9.6
Summary: A command-line application to dynamically generate decks of cards from a YAML specification and a CSV data file, inspired by nandeck.
License-Expression: GPL-2.0-only
Author: Julio Cabria
Author-email: juliocabria@tutanota.com
Requires-Python: >=3.11
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: dev
Requires-Dist: click
Requires-Dist: crossfiledialog (>=1.1.0)
Requires-Dist: flask (>=3.1.2)
Requires-Dist: jval (==1.0.6)
Requires-Dist: pandas
Requires-Dist: pillow (>=11.3.0)
Requires-Dist: platformdirs (>=4.5.1)
Requires-Dist: pytest ; extra == "dev"
Requires-Dist: pywin32 (>=311) ; sys_platform == "win32"
Requires-Dist: reportlab (>=4.4.3)
Requires-Dist: ruamel-yaml (>=0.19.1)
Requires-Dist: toml (>=0.10.2)
Requires-Dist: waitress (>=3.0.2)
Description-Content-Type: text/markdown

# DeckSmith

[julynx.github.io/decksmith](https://julynx.github.io/decksmith/)

*A powerful application to dynamically generate decks of cards from a YAML specification and a CSV data file.*

<a href="https://github.com/Julynx/decksmith/releases/latest/download/DeckSmith_Setup.exe" target="_blank">
<img src="https://i.imgur.com/cSWO5Ta.png" height="64">
</a><br><br>

<p align="center">
  <img src="https://raw.githubusercontent.com/Julynx/decksmith/refs/heads/main/docs/assets/screenshot.png" width='100%'>
</p>

<br>

DeckSmith is ideal for automating the creation of all kinds of decks, including TCG decks, tarot decks, business cards, and even slides.

## Why DeckSmith?

- ✨ Consistent layout and formatting across all cards. Define once, edit anytime, generate as many cards as you need.
- 🍳 Pure python, for easy installation [via pip](https://pypi.org/project/decksmith/) or with the [Windows installer](https://github.com/Julynx/decksmith/releases/latest/download/DeckSmith_Setup.exe).
- 🖥️ Modern GUI with a live preview to visualize your changes in real time as you design.
- ⚡ Highly performant card generation using parallel processing.
- 📖 Intuitive syntax and extensive [documentation](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md) that includes examples to help you get started.
- 🧰 Tons of powerful features such as:
  - [Start from a sample project and edit it instead of starting from scratch](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#creating-a-project)
  - [Extensive support for images](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#images), [text](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#text), [and all kinds of different shapes](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#shapes)
  - [Link any field to a column in the CSV file](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#example-with-deckcsv)
  - [Position elements absolutely or relative to other elements, using anchors to simplify placement](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#positioning)
  - [Powerful image transformations using filters like crop, resize, rotate, or flip](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#images)
  - [Export your deck as images or as a PDF for printing](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md#building-the-deck)

## Getting started (APP)

1. Download and install the [latest release](https://github.com/Julynx/decksmith/releases/latest/download/DeckSmith_Setup.exe).
2. Take a look at [this](https://julynx.github.io/decksmith/docs.html) to learn how to make the most out of the app and start building your first deck today!

## Getting started (CLI)

### Installation

- To begin, install DeckSmith by running:

  ```bash
  pip install decksmith
  ```

- To launch the GUI, run:

  ```bash
  decksmith --gui
  ```

### Creating a project

- Run the following command to start from sample `deck.yaml` and `deck.csv` files:

  ```text
  decksmith init
  ```

  - `deck.yaml` defines the layout for the cards in the deck.
  - `deck.csv` holds the data for each card, like the content of the text fields and the image paths.

### Defining the layout

- Edit `deck.yaml` to include all the elements you want on your cards.
  You can find a complete list of all the available elements and their properties in the [documentation](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md).

- You can reference any column from `deck.csv` in the `deck.yaml` file as `%column_name%`.

### Building the deck

- When you are ready to generate the deck images, run:

  ```text
  decksmith build
  ```

- After building a deck, you can export it to PDF by running:

  ```text
  decksmith export
  ```

## Documentation

Check out the [full documentation](https://github.com/Julynx/decksmith/blob/main/docs/DOCS.md) for more detailed information on how to use DeckSmith.

