briefli

Crates.iobriefli
lib.rsbriefli
version0.2.0
created_at2025-12-01 22:06:09.947663+00
updated_at2025-12-04 10:03:18.007636+00
descriptionSwiss letter management CLI using Typst - create properly formatted letters for Swiss envelope windows
homepagehttps://github.com/samvdst/briefli
repositoryhttps://github.com/samvdst/briefli
max_upload_size
id1960722
size41,405
Samuel (samvdst)

documentation

https://github.com/samvdst/briefli#readme

README

briefli 🇨🇭

Crates.io License

Swiss letter management CLI using Typst. Create properly formatted letters for Swiss C5 envelopes (A4 folded once) with left or right address windows.

Features

  • 📬 Swiss standard letter format (SN 010130)
  • 📍 Address positioning for left or right-side envelope windows
  • 👤 Multiple sender profiles (private/work)
  • 🔤 Typst-based templates for beautiful typography
  • 📦 Simple CLI for letter management

Installation

From crates.io

cargo install briefli

From source

git clone https://github.com/samvdst/briefli
cd briefli
cargo install --path .

Prerequisites

  • Typst must be installed and in your PATH

Quick Start

  1. Initialize your letters directory:
mkdir my-letters && cd my-letters
briefli init
  1. Configure your sender info in defaults.toml:
location = "ZĂĽrich"
lang = "de"
address-position = "left"  # or "right"

[sender.private]
name = "Your Name"
address = "Street 123, 8000 ZĂĽrich"

[sender.work]
name = "Your Name"
address = "Company AG, Street 456, 8001 ZĂĽrich"
  1. Create a new letter:
briefli new "KĂĽndigung Mietvertrag"
# Creates: 2024-01-15 KĂĽndigung Mietvertrag.typ
  1. Edit the .typ file, then compile:
briefli build

Usage

briefli new <subject>           # Create letter with private address (default)
briefli new -w <subject>        # Create letter with work address
briefli new --work <subject>    # Same as above

briefli build                   # Compile all .typ files to PDF
briefli list                    # List all letters and their status
briefli init                    # Initialize a new letters directory
briefli help                    # Show help

Swiss Letter Format

For C5 envelopes (A4 folded once), the template uses these measurements:

Element Left Window Right Window
Address from left 22mm 118mm
Address from top 60mm 60mm
Address area 85.5mm Ă— 45mm 85.5mm Ă— 45mm
Sender line from top 45mm 45mm

Use address-position = "left" (default) or "right" depending on your envelope's window position.

File Structure

my-letters/
├── defaults.toml              # Your sender configuration
├── ch-letter-template.typ     # Swiss letter template
├── 2024-01-15 Letter.typ      # Letter source
└── 2024-01-15 Letter.pdf      # Compiled PDF

Template Customization

The ch-letter-template.typ can be customized. Available parameters:

#show: ch-letter.with(
  sender: (
    name: "Your Name",
    address: "Street, ZIP City",
    extra: "phone/email",          // optional
  ),
  recipient: "Name, Company, Street, ZIP City",
  location: "ZĂĽrich",
  date: "15.01.2024",
  subject: "Letter Subject",
  footer: [Optional footer],       // optional
  font: "Arial",                   // optional, default: Arial
  address-position: "left",        // optional, "left" or "right"
)

License

Licensed under either of:

at your option.

Contributing

I'm building this for my personal use case, but if you have a cool feature idea, I'm open to hear all about it. PRs always welcome!

Commit count: 0

cargo fmt