celestine

Version, currently main branch1 version
  • main branchlatestOct 5, 2026

github.com/celestinecr/celestine

Fast, pure-Crystal SVG generation library with a fluent DSL and object model.

96 stars
2 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  celestine:
    github: celestinecr/celestine
    branch: main

main is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
>= 1.20.0
License
MIT
Author
Ian Rash
Targets
  • logo from src/make_logo.cr
  • carbon from lib/carbon/src/carbon/cli.cr
  • jasper from lib/jasper/src/jasper_cli.cr
  • benchmark from src/benchmark.cr

Dependencies

Development Dependencies

  • carbon*github: sol-vin/carbon, branch: maindev
  • jasper*github: sol-vin/jasper, branch: maindev
  • lexbor*github: kostya/lexbordev

README

Celestine Crystal CI Documentation badge

Celestine Logo

A neat library and DSL for creating graphics using SVG

Installation

Add to shards.yml

dependencies:
  celestine:
    github: celestinecr/celestine

Docs

Documentation is cool, you can view the docs for Celestine at:

SVG Stuff It Can Do

A full list is here.

TODO

  • Full SVG support for all elements and attributes
  • Finish adding all filters
  • Add pattern
  • Add gradients

Examples

If you'd like to see how the logo was made, check out make_logo

Here are some more intricate examples. procedural_art

Real world examples made with Celestine. All of these are flat SVG files with no JS inside, using only functions built into Celestine.

Community Examples

These are some examples of cool stuff other people have done with Celestine!

  • sunrise @ github by SugarFi
    • Uses the very strong Turbulence and DisplacementMap filters to create a very neat water effect.

Development

HMU via issues or make a pull request or something I don't know.

Contributing

  1. Fork it (https://github.com/celestinecr/celestine/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request to the development branch at celestinecr/celestine

Contributors