Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Turn a YAML, JSON, or CSV collection into a customizable static website with filtering and sorting.
Tonic is an open-source digital collections framework that turns a YAML, JSON, or CSV file into a customizable, filterable static website. Built on Middleman, Ralix, and Tailwind CSS, it is made by Subgin and released under the MIT license.
Tonic is a static site generator for structured collections of items—products, artworks, books, and similar data. It takes a collection file in YAML, JSON, or CSV, parses it, and produces a fully responsive website with filtering, sorting, and optional detail, category, and statistics pages. The project runs on Ruby and Yarn, uses Middleman as the underlying static site engine, Ralix for JavaScript interactions, and Tailwind CSS for styling.
data/collection.yaml, data/collection.json, or data/collection.csv; numeric fields are auto-detected and array fields like tags can be comma-separated in CSV cells.name, description, category, tags, and images automatically drive item rendering and related filters; any attribute ending in _at is parsed as a date./category/design, and a stats page at /stats are all generated by default and can be disabled via config.yaml.source/templates/collection/ to change the item card and detail page markup, or add extra pages via Middleman-compatible templates.Artists and makers can showcase a portfolio of works with filters by medium or year, while librarians and archivists can publish digital collections of documents, photographs, or artifacts with searchable metadata. Product teams can present a catalog of items with price and download counts. Anyone who maintains a structured dataset and wants a clean website without building a frontend from scratch fits Tonic's workflow.
collection.yaml with price, downloads, and published_at, then generate a site with sorting by price or date.address.street or geo.lat to expose structured metadata, plus the stats page to visualize field distributions.detail_page_link on any item to jump to an external page instead of the generated detail page.Install with bin/setup (requires Ruby and Yarn), then edit data/collection.yaml and data/config.yaml. Run bin/dev for a local development server, or bin/build to compile a static site into the build/ folder. The tool analyzes the first item in the collection to infer filter types, so the output is customized to the shape of your data.
No. Adding items means editing a YAML/JSON/CSV file, and most site options live in data/config.yaml. For deeper changes, you can edit ERB templates, but that is optional.
Yes. Set remote_collection to a URL in config.yaml and the framework will fetch the collection from that remote resource.
Tonic is open source under the MIT license, so it is free to use, modify, and distribute. No pricing tiers are offered.
It generates a static website built with Middleman, with HTML pages and assets placed in the build/ directory, ready to host on any static host.
Set detail_pages: false in config.yaml; you can still link items to external pages using detail_page_link.
