Terminal Velocity
A blazingly fast static site generator for developers who want to write things down. Built with Rust for performance and efficiency.
████████╗███████╗██████╗ ███╗ ███╗██╗███╗ ██╗ █████╗ ██╗
╚══██╔══╝██╔════╝██╔══██╗████╗ ████║██║████╗ ██║██╔══██╗██║
██║ █████╗ ██████╔╝██╔████╔██║██║██╔██╗ ██║███████║██║
██║ ██╔══╝ ██╔══██╗██║╚██╔╝██║██║██║╚██╗██║██╔══██║██║
██║ ███████╗██║ ██║██║ ╚═╝ ██║██║██║ ╚████║██║ ██║███████╗
╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝
██╗ ██╗███████╗██╗ ██████╗ ██████╗██╗████████╗██╗ ██╗
██║ ██║██╔════╝██║ ██╔═══██╗██╔════╝██║╚══██╔══╝╚██╗ ██╔╝
██║ ██║█████╗ ██║ ██║ ██║██║ ██║ ██║ ╚████╔╝
╚██╗ ██╔╝██╔══╝ ██║ ██║ ██║██║ ██║ ██║ ╚██╔╝
╚████╔╝ ███████╗███████╗╚██████╔╝╚██████╗██║ ██║ ██║
╚═══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ ╚═╝
Features
- 🚀 Lightning fast builds with Rust
- 📝 Markdown support with YAML frontmatter
- 🎨 Customizable templates using Tera
- 🔥 Hot reloading during development
- 📁 Static file handling
- 🏷️ Tag support for posts
- 🎯 Simple and intuitive CLI
Installation
From Source
- Make sure you have Rust and Cargo installed
- Clone the repository
- Build and install:
Quick Start
- Create a new blog:
- Create a new post:
- Build the site:
- Serve locally:
Project Structure
After initialization, your project will have the following structure:
my-blog/
├── posts/ # Your markdown posts go here
├── templates/ # Tera templates
│ ├── base.html
│ ├── index.html
│ └── post.html
├── static/ # Static assets (CSS, images, etc.)
├── components/ # Reusable template components
└── config.toml # Site configuration
Command Reference
init
Initialize a new blog site:
Options:
path: Directory to create the new blog in (default: current directory)
new
Create a new blog post:
This will create a new markdown file in the posts directory with the following format:
- Filename:
YYYY-MM-DD-your-post-title.md - Pre-populated frontmatter
- Slugified title for URLs
build
Build your site:
Options:
--target-dir, -t: Source directory containing your site (default: current directory)--output-path, -o: Output directory for the built site (default: "dist")--verbose, -v: Show verbose output during build
serve
Serve your site locally:
Options:
--target-dir, -t: Directory containing the built site (default: "./dist")--port: Port to serve on (default: 8080)--hot-reload: Enable hot reloading on file changes
Post Format
Posts should be written in Markdown with YAML frontmatter:
title: "Your Post Title"
date: 2024-11-19
author: "Your Name"
tags: ["rust", "blog"]
preview: "A brief preview of your post"
slug: "your-post-slug"
Your post content here...
LLM Integration
Terminal Velocity includes integration with Claude, Anthropic's large language model, to help you get started with blog post writing. When creating a new post, you can provide a prompt to generate an initial outline.
Using the LLM Features
To generate a blog post outline using Claude, use the --prompt flag with the new command:
# Create a new post with AI-generated outline
# You can also set your API key via environment variable
The --prompt flag requires an Anthropic API key, which you can provide in two ways:
- Set the
ANTHROPIC_API_KEYenvironment variable - Pass it directly using the
--anthropic-keyflag
Example
# Create a new post about distributed systems
This will create a new post with:
- Standard frontmatter (title, date, etc.)
- An AI-generated outline based on your prompt
- A placeholder for your content
The file will automatically open in your configured editor, where you can begin writing using the generated outline as a guide.
Tips for Good Prompts
For best results with the outline generation:
- Be specific about the topics you want to cover
- Mention your target audience if relevant
- Include any specific aspects or angles you want to explore
- Note if you want a particular style (technical, beginner-friendly, etc.)
Example prompt: "Write an outline for a technical blog post explaining WebAssembly to experienced JavaScript developers, focusing on real-world use cases and performance benefits"
Configuration
The config.toml file contains your site's configuration:
= "My Terminal Velocity Blog"
= "A blazingly fast tech blog"
= "http://localhost:8000"
[]
= "Anonymous"
= "author@example.com"
[]
= 8000
= true
# Relative to the site directory
= "dist"
= "posts"
= "templates"
= "static"
Development
Requirements
- Rust 1.70+
- Cargo
Building from Source
- Clone the repository
- Install dependencies and build:
Running Tests
Publishing
To publish a new version:
- Update the version in
Cargo.toml - Update CHANGELOG.md
- Commit the changes
- Create a new version tag:
- Push the tag:
The GitHub Action will automatically:
- Verify the version matches the tag
- Run all tests
- Publish to crates.io
- Create a GitHub release
Publishing Manually
If you need to publish manually:
# Verify everything works
# Publish to crates.io
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.