Skip to main content

A modern, feature-rich PyQt5 application for previewing and rendering Velocity templates with real-time syntax highlighting, validation, and export capabilities.

Project description

Velocity Template Previewer

CI Python 3.10+ PyQt5 PyPI License: MIT Code style: black

Desktop application for previewing and rendering Apache Velocity templates with real-time syntax highlighting and validation. Perfect for developers working with Atlassian products (Jira, Confluence), ScriptRunner, email templates, and web applications.

Velocity Template Previewer

What is This?

Apache Velocity is a Java-based template engine commonly used in:

  • Atlassian Products: Jira email templates, Confluence macros, ScriptRunner scripts
  • Email Systems: Dynamic email generation
  • Web Applications: Server-side templating
  • Code Generation: Template-based code scaffolding

This tool lets you preview and test your Velocity templates instantly without deploying to production.

Features

  • Real-time Preview: See changes as you type
  • Syntax Highlighting: Color-coded templates and JSON data
  • Validation: Catch errors before deployment
  • Background Rendering: Smooth performance with large templates
  • Auto-save: Never lose your work (saves every 30 seconds)
  • Export: Generate static HTML from your templates
  • Dark Mode: Easy on the eyes
  • Recent Files: Quick access to your projects

Installation

Requirements: Python 3.10+ (Windows, macOS, Linux)

pip install velocity-previewer
velocity-previewer

Or from source:

git clone https://github.com/star7js/velocity-previewer.git
cd velocity-previewer
pip install -e .
velocity-previewer

Quick Start

  1. Open a template: File > Open or Ctrl+O
  2. Add your data: Switch to Data tab, paste JSON
  3. Render: Press F5
  4. Export (optional): File > Export to HTML

Try the included examples/example-template.vm with examples/example-data.json to see it in action.

Use Cases

Atlassian/ScriptRunner Development

Test Jira email notifications, Confluence macros, or ScriptRunner templates locally before deploying:

#if($issue.priority.name == "Critical")
  <span style="color: red;">$issue.key - $issue.summary</span>
#end

Email Template Design

Preview dynamic email templates with test data:

Hello $customer.name,

Your order #$order.id has shipped!
#foreach($item in $order.items)
  - $item.name (Qty: $item.quantity)
#end

Dynamic Reports

Generate reports from JSON data without manual formatting.

Keyboard Shortcuts

Action Shortcut
Render Template F5
Open Template Ctrl+O
Save Template Ctrl+S
Validate Template Ctrl+Shift+V
Validate Data Ctrl+Shift+D

Supported Velocity Syntax

  • Variables: $variable, ${variable}
  • Directives: #if, #foreach, #set, #macro
  • Comments: ## (single line), #* ... *# (multi-line)
  • Properties: $object.property, $array[0]
  • Methods: $string.substring(0, 5)

Full Apache Velocity specification supported via Airspeed engine.

Platform Support

  • ✅ Windows 10/11
  • ✅ macOS 10.15+
  • ✅ Linux (Ubuntu, Fedora, Arch)

Development

# Install dependencies
pip install -e .

# Run tests
pytest

# Type check
mypy src/

# Project structure
├── src/velocity_previewer/    # Main package   ├── main.py                # Application UI and logic   ├── renderer.py            # Background rendering & context building   ├── styles.py              # Light/dark Qt stylesheets   ├── utils.py               # Template processing   └── syntax_highlighters.py # Syntax highlighting
├── examples/                  # Example templates and data
├── tests/                     # Test files
└── pyproject.toml            # Project configuration

Settings (window size, recent files) are saved to:

  • Windows: %APPDATA%/VelocityPreviewer
  • macOS: ~/Library/Application Support/VelocityPreviewer
  • Linux: ~/.config/VelocityPreviewer

Troubleshooting

Issue Solution
Template won't render Use Tools > Validate Template (Ctrl+Shift+V) to see errors
JSON parse errors Use Tools > Validate Data (Ctrl+Shift+D) to check format
Slow performance Large templates render in background automatically
App won't start Ensure PyQt5 is installed: pip install PyQt5

Roadmap

  • Live preview mode (render on every keystroke)
  • Multiple data sets for testing
  • Template snippet library
  • Velocity macro autocomplete

License

MIT License

Built With

  • PyQt5 - Cross-platform UI framework
  • Airspeed - Python implementation of Apache Velocity

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

velocity_previewer-1.1.1.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

velocity_previewer-1.1.1-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file velocity_previewer-1.1.1.tar.gz.

File metadata

  • Download URL: velocity_previewer-1.1.1.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for velocity_previewer-1.1.1.tar.gz
Algorithm Hash digest
SHA256 6cb5324a434be82f9f2cf089d1605a52ec09060c7c3edd9a7889d1b95d98d9da
MD5 e34ce49d5494d42066a8fa3a5e3851cc
BLAKE2b-256 313da240a638b2d20f20b1a3c973084a3597229f72d0a4244f9b658013304bb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for velocity_previewer-1.1.1.tar.gz:

Publisher: publish.yml on star7js/velocity-previewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velocity_previewer-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for velocity_previewer-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f7d09b5de3af4969c25c3b840d0f36db440ccc0bd4810d5b36bfe67fa4565f12
MD5 ded44fe05be3047b7b8aa1369c827046
BLAKE2b-256 f65f2fe5096a134d083695747efc6731ae057fc03fe596d132196d5e058dc11f

See more details on using hashes here.

Provenance

The following attestation bundles were made for velocity_previewer-1.1.1-py3-none-any.whl:

Publisher: publish.yml on star7js/velocity-previewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page