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.9+ PyQt5 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.9+ (Windows, macOS, Linux)

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.0.tar.gz (20.1 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.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: velocity_previewer-1.1.0.tar.gz
  • Upload date:
  • Size: 20.1 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.0.tar.gz
Algorithm Hash digest
SHA256 a8c70aafe298223d73542c50025e08909ee9e5272a5c8a54c196ea1407c33918
MD5 0c7abc49553c73f1a8a9917799014ed8
BLAKE2b-256 35c1134de12f30c8a043298fd8db2c8fb33b386f7109f7be1749001774caa0a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for velocity_previewer-1.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for velocity_previewer-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 031470435225ff0d72e7522ea39cd1f36efc8c83782559344776e28e11d9b902
MD5 e59a36df62c3dba92e6960e5e6b5e553
BLAKE2b-256 2fb7e624a72670813f3e4376c5af99509ed86080d8296408ab7962f2699be003

See more details on using hashes here.

Provenance

The following attestation bundles were made for velocity_previewer-1.1.0-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