Skip to content

Working Hours Documentation System: 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.

Notifications You must be signed in to change notification settings

Rouzihiro/working-hours-report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Working Hours Documentation System

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.

Features

  • 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

📄 Report Preview

Monthly Report Example

Example of the generated monthly report

Quick Start

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)

Project Structure

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/                     

Configuration

1. Set Your Variables

Edit variables.py:

VARIABLES = {
    "DEPARTEMENT": "departement",
    "EMPLOYE_NAME": "Your Name",
    "CITY": "Your City",
    "DATE": "31.12.2025"
}

2. Add Your Data

Place CSV files into /data folder

CSV Format: Datum,Wochentag,Arbeitszeit,Arbeitsstunden,Bemerkungen 02.12.2025,Dienstag,10:00 - 13:30,3.5h, ...

3. Customize Templates

Edit templates/monthly-template.typ for:

  • Layout adjustments
  • Color schemes (luma(245) for light gray)
  • Font changes ("Victor Mono")
  • Header/footer content

Advanced Usage

Watch Mode (Live Preview)

Watch German template make watch-monthly

Watch English template
make watch-test

Manual Generation

Generate Typst file only python variables.py

Compile manually typst compile templates/monthly-report.typ output/custom.pdf

Example Data

Test with included example data: make test # Uses example/variables.py and example/01.2026.csv

CSV Format Reference

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

Customization

Change Colors

In templates/monthly-template.typ:
#set text(fill: rgb("#2d3748"))  // Text color
#block(fill: luma(245))          // Background color

Change Font

#set text(font: "Inter", weight: 400)

Modify Table Layout

Edit lib/working-hours.typ for:

  • Column widths
  • Border styles
  • Alternating row colors
  • Checkbox appearance

Requirements

  • Typst (PDF generation)
  • Python 3.6+ (variable substitution)

Install Typst

#!/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 "========================================="

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/improvement)
  3. Commit changes (git commit -m 'Add some feature')
  4. Push to branch (git push origin feature/improvement)
  5. Open a Pull Request

License

MIT License - see LICENSE for details.

Acknowledgments

  • 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!

About

Working Hours Documentation System: 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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published