Skip to content

Documentation-focused static site generator. Type-safe rendering, scriptable with Kotlin. Not for SPAs or complex apps.

License

Notifications You must be signed in to change notification settings

sakethpathike/genesis

Repository files navigation

Genesis

build result Maven Central Version

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.

  1. Install a release: Download it from GitHub releases or install via the openSUSE Software.

  2. Build from source: To build and install the CLI locally from the source code:

     ./gradlew installDist

    This 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

About

Documentation-focused static site generator. Type-safe rendering, scriptable with Kotlin. Not for SPAs or complex apps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages