whatisgithub

What is simple-modern-uv?

jlevy/simple-modern-uv — explained in plain English

Analysis updated 2026-05-18

281JinjaAudience · developerComplexity · 2/5Setup · easy

In one sentence

A starter template that sets up a new Python project with modern tools like uv, ruff, and pytest already configured.

Mindmap

mindmap
  root((simple-modern-uv))
    What it does
      Scaffold a Python project
      Preconfigure tooling
      Publish to PyPI
    Tech stack
      uv
      ruff
      BasedPyright
      pytest
    Use cases
      Start a new library
      Skip tool research
      Automate CI releases
    Audience
      Developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Create a new Python project preconfigured with uv, ruff, and pytest in minutes.

USE CASE 2

Automatically publish a package to PyPI when you tag a release.

USE CASE 3

Pull future template improvements into your project like a git merge, via Copier.

USE CASE 4

Read through a small, fully understandable project configuration in about ten minutes.

What is it built with?

PythonuvruffpytestGitHub Actions

How does it compare?

jlevy/simple-modern-uvdavestephens/ansible-nasgeerlingguy/internet-pi
Stars2813,7354,687
LanguageJinjaJinjaJinja
Setup difficultyeasyhardmoderate
Complexity2/54/53/5
Audiencedeveloperops devopsops devops

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

One command, uvx uvtemplate, walks you through creating a new project.

So what is it?

simple-modern-uv is a starter template for new Python projects. It gives you a ready-made project layout configured with a specific set of modern tools, so you do not have to spend time researching which tools to use or how to wire them together. The template is built around uv, a fast Python package and project manager written in Rust. uv handles installing Python itself, creating isolated environments, managing dependencies, and publishing packages to PyPI. The template adds ruff for code formatting and linting (a faster replacement for the older black and flake8 tools), BasedPyright for type checking (chosen because it works well across VSCode-based editors including Cursor and Windsurf), pytest for running tests, and GitHub Actions for continuous integration and automated publishing to PyPI when you create a release tag. One design goal of the template is to keep it small enough to read in about ten minutes. It is roughly 300 lines of code. The intention is that you can look at everything it includes and understand each choice, rather than inheriting a large amount of configuration you do not fully control. The template uses a tool called Copier for instantiation. Copier lets you copy the template into a new directory and fill in your project name and other details. Unlike simpler template tools, Copier also lets you pull future updates to the template back into your existing project, similar to a git merge, so your project can benefit from improvements over time. The quickest way to use it is to run uvx uvtemplate in a terminal. That command walks you through creating a new project from the template. Alternatively, you can run Copier directly, or use the GitHub template button to copy the repository. The template does not include Docker, private package repositories, documentation site generation, or Conda support. Those can be added manually if needed.

Copy-paste prompts

Prompt 1
Run uvx uvtemplate to scaffold a new Python project from this template.
Prompt 2
Explain how Copier lets me update my project when this template changes.
Prompt 3
Show me how the GitHub Actions workflow in this template publishes to PyPI on a release tag.
Prompt 4
What does this template intentionally leave out, like Docker or Conda support?

Frequently asked questions

What is simple-modern-uv?

A starter template that sets up a new Python project with modern tools like uv, ruff, and pytest already configured.

What language is simple-modern-uv written in?

Mainly Jinja. The stack also includes Python, uv, ruff.

How hard is simple-modern-uv to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is simple-modern-uv for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.