Skip to content

greening is an opinionated, lightweight project automation tool for solo developers and creative coders. With just a few commands, you can scaffold a production-ready Python package — complete with docs, tests, GitHub Actions workflows, PyPI packaging, and an auto-deployed GitHub Pages site. No boilerplate. No setup hell. Just instant polish.

License

Notifications You must be signed in to change notification settings

chris-greening/greening

Repository files navigation

🌱 Greening

greening is an opinionated, full-stack Project as Code automation tool for solo developers and creative coders.

With just a few commands, you can scaffold a production-ready Python package complete with docs, tests, GitHub Actions workflows, PyPI packaging, and an auto-deployed GitHub Pages site. No boilerplate or setup hell, just instant polish.

Downloads Issues License Version

"Buy Me A Coffee"

Table of Contents


🍃 Why greening?

Most devs never ship their tools. Not because the code isn’t good, but because the surrounding friction is too high:

  • How do I structure the project?
  • How do I set up CI/CD, tests, and linting?
  • How do I make it look legit?
  • How do I talk about it?

greening answers all of that in one opinionated workflow.

User typing in commands greening init, greening new, and greening deploy and rapidly deploying a project


🌿 Key features

greening automates your project creation pipeline:

greening init - generates a starter greening.yaml config file ✅ greening new - scaffolds your entire Python project in-place

Additional features:

  • Builds and pushes a polished GitHub Pages site
  • Automatically initializes a Git repo
  • Optionally creates a GitHub repository via API
  • Optionally pushes to GitHub (main branch)
  • Injects metadata throughout the project using Cookiecutter
  • Uses Jekyll + Minimal Mistakes for clean, brandable documentation
  • Auto-documentation with Sphinx + Read the Docs support
  • Automatically wire in Google Analytics if configured

🌲 Getting started

1. Install greening

pip install greening

2. Run greening init

This creates a starter config file in your current directory:

greening init

It generates greening.yaml:

project_name: Test project
project_slug: test_project
github_username: chris-greening
author_name: Chris Greening
email: chris@christophergreening.com

# git_remote: git@github.com:chris-greening/test-repo.git
push: false
create_github_repo: true

3. Scaffold the project

Run this in the same directory as your config:

greening new

greening will generate your project in-place and optionally push it to GitHub.


🌻 GitHub authentication

To enable GitHub repo creation and pushing:

  1. Generate a GitHub Personal Access Token with repo scope
  2. Add it to your shell config:
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Then run:

source ~/.bashrc  # or ~/.zshrc

See this blog post for more


🌳 Blog posts

Check the blog out for more info here

🌴 Roadmap

A focused, opinionated roadmap toward making Greening the most seamless developer automation tool for launching and shipping polished open source projects.

  • Plugin ecosystem to support custom features, commands, etc. within the greening command-line tool
  • Custom template support for creating tailor-made templates
  • Idempotent execution so commands are safe to run repeatedly with no unexpected side effects
  • Cleanup partial builds in the event of a command failure to prevent half-baked launches

🍀 Support

Reach out to me if you want to connect or have any questions and I will do my best to get back to you

Python logo with greenery growing around it

About

greening is an opinionated, lightweight project automation tool for solo developers and creative coders. With just a few commands, you can scaffold a production-ready Python package — complete with docs, tests, GitHub Actions workflows, PyPI packaging, and an auto-deployed GitHub Pages site. No boilerplate. No setup hell. Just instant polish.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •