Lychee is a paint app designed to use code to draw images instead of brushstrokes. Lychee uses Zest, our custom programming language, to draw images. This has many advantages:
- Smaller image files
- More shareability
- More friendship
- More zestiness
You may be asking: why not just use SVG? Our answer: embrace the zest. Live the wild life. Live the Lychee life.
Lychee is useful for a few different applications:
- Simple graphic design work
- Learning to code
- Providing a more intuitive alternative to SVG
Lychee was built in 24 hours by @ix0rai and @goshikito at devhacks 2026, where it won the Rookie of the Year Award (best first-time hackathon participants) and the Master of Devhacks Award (best overall).
Run using Gradle:
./gradlew runDraws a straight line from the starting coordinates to the ending coordinates, using the provided width. Can be colored.
line([0:0], [100:100], 5, "red");
line([0:0], [100:100], 5, "#bf3344");Parameters:
start:Coordinateend:Coordinatewidth:intcolor:String
Erases a straight line from the starting coordinates to the ending coordinates, using the provided width. Cannot be colored.
erase([0:0], [100:100], 5);Parameters:
start:Coordinateend:Coordinatewidth:int
Fills a rect with the chosen color from the starting coordinates, using the provided height and width.
fill([0:0], 50, 100, "red");
fill([0:0], 50, 100, "#bf3344");Parameters:
start:Coordinatewidth:intheight:intcolor:String
Draws a circle from the starting coordinates, using the provided height and width. Can be colored.
circle([0:0], 30, 30, "red");
circle([0:0], 30, 30, "#bf3344");Parameters:
start:Coordinatewidth:intheight:intcolor:String
Draws text from the starting coordinates, using the provided font size. Can be colored.
text([50:50], 30, "hello", "red");
text([50:50], 30, "hello", "#bf3344");Parameters:
start:CoordinatefontSize:inttext:Stringcolor:String
Creates a layer. Commands in higher layers will be drawn over lower layers.
Any command not inside a layer block will be drawn on layer 0.
layer(1) {
//commands go here
}Parameters:
layer:int
- A color can be written as a word or a hexcode, but words have a limited selection of colors (black, white, red, orange, yellow, green, blue, purple, pink)
- Coordinates are in
[x:y]format - Zest supports comments on lines beginning with
//