Genesis
September 11, 2025 ยท View on GitHub
A static site generator that turns Markdown into documentation sites. Available as both a CLI tool and a Kotlin library.
Genesis focuses on UI generation for content-heavy sites. For interactivity, you'll need to embed raw JavaScript strings, which can get messy for complex applications. Genesis works best for documentation, blogs, and content sites with minimal JavaScript needs.
Heads up: This is an experimental personal project. I'm figuring things out as I go, so expect some rough edges and API changes.
Write Markdown, configure with YAML, customize with Kotlin scripts. That's pretty much it.
What Genesis Is Good For
- Documentation sites (primary focus)
- Blogs and other content websites
- Static informational sites
- Projects with simple interactivity needs
What Genesis Isn't Ideal For
- Complex web applications
- Heavy JavaScript/interactive sites
- Projects requiring modern frontend frameworks
- Real-time or dynamic applications
Usage
CLI version:
There are two ways to get the CLI tool.
-
Install a release: Download it from GitHub releases or install via the openSUSE Software.
-
Build from source: To build and install the CLI locally from the source code:
./gradlew installDistThis will generate the required executable scripts at:
/genesis-cli/build/install/genesis-cli
Once installed, you can use it in your project:
# Create genesis.config.yml with your site structure
# Write some .md files
genesis-cli serve # Live preview
genesis-cli build # Generate site
As a library:
implementation("io.github.sakethpathike:genesis-core:LATEST_VERSION")
generate(
rootDirPath = "path/to/your/docs",
genesisRenderer = DefaultGenesisRenderer,
genesisColors = GenesisColors.Default,
outputFolderName = "genesisBuild"
)
Customization
Genesis is designed to be extended programmatically.
With the CLI
When using CLI, you can customize the output by simply adding Kotlin script files to your project's root directory. There is no plugin or theme system to learn - just your existing Kotlin knowledge.
genesis.renderer.kts: Change how Markdown elements are rendered into HTML.genesis.colors.kts: Override the default color palette.
As a Library
When using genesis-core as a library, pass your custom implementation instance to the generate function.
Current State
This is a personal project that works for my own use cases. The default design is opinionated but will probably evolve. The API is not stable and might change as I figure out better ways to do things.
Examples of sites built with Genesis:
Documentation
Genesis Documentation - Setup guides, configuration, and examples.
License
Apache License 2.0