A professional, self-contained Typst template system for automated working hours tracking and reporting. Generate clean, formatted monthly reports from CSV data with one command.
- One-Command Generation - Full PDF reports with
make month - Professional Tables - Alternating colors, checkboxes, automatic numbering
- CSV Data Integration - Import working hours from spreadsheet exports
- No External Dependencies - Pure Typst & Python, no complex setup
- German Formatting - Optimized for medical/documentation standards
- Flexible Templates - Easily customizable colors, fonts, layouts
- Multi-Language Support - German & English templates included
Example of the generated monthly report
Clone the repository: git clone https://github.com/Rouzihiro/working-hours-report.git cd working-hours-report
Generate example report (English): make test
Generate your monthly report (German): make month
Clean generated files: make clean
Output: output/monthly.pdf (your report) or output/example.pdf (demo)
working-hours-report/
├── templates/
│ ├── monthly-template.typ
│ ├── monthly-template-en.typ
│ └── monthly-report.typ
├── example/
│ ├── variables.py
│ └── 01.2026.csv
├── lib/
│ └── working-hours.typ
├── assets/
├── data/
└── output/
Edit variables.py:
VARIABLES = {
"DEPARTEMENT": "departement",
"EMPLOYE_NAME": "Your Name",
"CITY": "Your City",
"DATE": "31.12.2025"
}
Place CSV files into /data folder
CSV Format: Datum,Wochentag,Arbeitszeit,Arbeitsstunden,Bemerkungen 02.12.2025,Dienstag,10:00 - 13:30,3.5h, ...
Edit templates/monthly-template.typ for:
- Layout adjustments
- Color schemes (luma(245) for light gray)
- Font changes ("Victor Mono")
- Header/footer content
Watch German template make watch-monthly
Watch English template
make watch-test
Generate Typst file only python variables.py
Compile manually typst compile templates/monthly-report.typ output/custom.pdf
Test with included example data: make test # Uses example/variables.py and example/01.2026.csv
Column: Datum
Required: Yes
Example: 01.12.2025
Description: Date (DD.MM.YYYY)
Column: Wochentag
Required: Yes
Example: Montag
Description: Weekday in German
Column: Arbeitszeit
Required: No
Example: 10:00 - 13:30
Description: Time range (optional)
Column: Arbeitsstunden
Required: Yes
Example: 3.5h
Description: Hours worked
Column: Bemerkungen
Required: No
Example: mobiles Arbeiten
Description: Notes/comments
In templates/monthly-template.typ:
#set text(fill: rgb("#2d3748")) // Text color
#block(fill: luma(245)) // Background color
#set text(font: "Inter", weight: 400)
Edit lib/working-hours.typ for:
- Column widths
- Border styles
- Alternating row colors
- Checkbox appearance
- Typst (PDF generation)
- Python 3.6+ (variable substitution)
#!/bin/bash
# Typst & Tinymist Installation Script
echo "========================================="
echo "Installing Typst & Tinymist for Neovim"
echo "========================================="
# Update system and install dependencies
echo "📦 Installing system dependencies..."
sudo dnf install -y openssl-devel gcc make pkgconfig cargo
# Install Typst CLI
echo "🚀 Installing Typst CLI..."
cargo install typst-cli --locked
# Install Tinymist CLI (LSP server)
echo "💡 Installing Tinymist CLI (LSP server)..."
cargo install --git https://github.com/Myriad-Dreamin/tinymist --locked tinymist-cli
# Verify installations
echo "✅ Verifying installations..."
echo ""
echo "Typst version:"
typst --version || echo "Typst not found in PATH"
echo ""
echo "Tinymist version:"
tinymist --version || echo "Tinymist not found in PATH"
echo ""
echo "========================================="
echo "Installation Complete!"
echo ""
echo "Next steps in Neovim:"
echo "1. Open Neovim"
echo "2. Run: :MasonInstall tinymist"
echo ""
echo "Why Mason too? Mason ensures the LSP is in the"
echo "right location for Neovim's package manager."
echo "========================================="
- Fork the repository
- Create a feature branch (git checkout -b feature/improvement)
- Commit changes (git commit -m 'Add some feature')
- Push to branch (git push origin feature/improvement)
- Open a Pull Request
MIT License - see LICENSE for details.
- Built with Typst - The next-generation document compiler
- Inspired by German medical documentation standards
- Designed for clarity and professional presentation
Quick Reference:
make help # Show all commands
make test # Generate example report
make month # Generate your report
make clean # Remove generated files
Star this repo if you find it useful!
