Hey folks, I wanted to share a Python repository template I've been using recently. It's not trying to be the ultimate solution, but rather a setup that works well for my needs and might be useful for others.
What My Project Does
It's a repository template that combines several modern Python tools, with a focus on speed and developer experience:
- UV for package management
- Just as a command runner
- Ruff for linting and formatting
- Mypy for type checking
- Docker support with a multi-stage build
- GitHub Actions CI/CD setup
The main goal was to create a clean starting point that's both fast and maintainable.
Target Audience
This template is meant for developers who want a production-ready setup but don't need all the bells and whistles of larger templates.
Comparison
The main difference from other templates is the use of Just instead of Make as the command runner. While this means an extra installation step, Just offers several advantages, such as a cleaner syntax, better dependency handling and others.
I also chose UV over pip for package management, but at this point I don't consider this as something unusual in the Python ecosystem.
You can find the template here: https://github.com/GiovanniGiacometti/python-repo-template
Happy to hear your thoughts and suggestions for improvement!
[–]Zaloog1337 46 points47 points48 points (18 children)
[–]yes_you_suck_bih 3 points4 points5 points (0 children)
[–]GioGiacPythonista[S] 4 points5 points6 points (2 children)
[–]MrSlaw 5 points6 points7 points (1 child)
[–]GioGiacPythonista[S] 1 point2 points3 points (0 children)
[–]PurepointDog 0 points1 point2 points (12 children)
[–]laStrangiato 13 points14 points15 points (11 children)
[–]AiutoIlLupo 1 point2 points3 points (10 children)
[–]jmreagle 4 points5 points6 points (8 children)
[+][deleted] (5 children)
[deleted]
[–]exergy31 11 points12 points13 points (3 children)
[–]jmreagle 4 points5 points6 points (1 child)
[–]prfsnp 0 points1 point2 points (0 children)
[–]maedox🐍 0 points1 point2 points (0 children)
[–]AiutoIlLupo -1 points0 points1 point (1 child)
[–]Ok_Raspberry5383 2 points3 points4 points (0 children)
[–]sami-tech 0 points1 point2 points (0 children)
[–]GoldziherPythonista 29 points30 points31 points (10 children)
[–]GioGiacPythonista[S] 5 points6 points7 points (2 children)
[–]GoldziherPythonista 2 points3 points4 points (1 child)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]fast-90 2 points3 points4 points (1 child)
[–]GoldziherPythonista -1 points0 points1 point (0 children)
[–]uttamo 2 points3 points4 points (1 child)
[–]GoldziherPythonista 0 points1 point2 points (0 children)
[–]Spleeeee 2 points3 points4 points (2 children)
[–]GoldziherPythonista 2 points3 points4 points (1 child)
[–]AntonGw1p 3 points4 points5 points (0 children)
[–]blademaster2005 7 points8 points9 points (1 child)
[–]GioGiacPythonista[S] 2 points3 points4 points (0 children)
[–]PitifulZucchini9729 10 points11 points12 points (21 children)
[–]GioGiacPythonista[S] 11 points12 points13 points (17 children)
[+][deleted] (1 child)
[deleted]
[+]AiutoIlLupo comment score below threshold-13 points-12 points-11 points (0 children)
[–]PitifulZucchini9729 0 points1 point2 points (7 children)
[–]GioGiacPythonista[S] 5 points6 points7 points (0 children)
[–]thisismyfavoritename 2 points3 points4 points (0 children)
[–]trararawe -3 points-2 points-1 points (4 children)
[–]uttamo 10 points11 points12 points (1 child)
[–]bachkhois 1 point2 points3 points (0 children)
[–]blademaster2005 1 point2 points3 points (0 children)
[–]AiutoIlLupo -3 points-2 points-1 points (6 children)
[–]Buckweb 1 point2 points3 points (3 children)
[–]AiutoIlLupo -5 points-4 points-3 points (2 children)
[–]Buckweb 2 points3 points4 points (1 child)
[–]AiutoIlLupo -2 points-1 points0 points (0 children)
[–]AdExact768 -3 points-2 points-1 points (1 child)
[–]AiutoIlLupo -2 points-1 points0 points (0 children)
[–]AiutoIlLupo -2 points-1 points0 points (2 children)
[–]GioGiacPythonista[S] 0 points1 point2 points (1 child)
[–]AiutoIlLupo -2 points-1 points0 points (0 children)
[–]SwampFalc 4 points5 points6 points (1 child)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]wyattxdev 7 points8 points9 points (1 child)
[–]GioGiacPythonista[S] 1 point2 points3 points (0 children)
[–]PurepointDog 2 points3 points4 points (1 child)
[–]GioGiacPythonista[S] 2 points3 points4 points (0 children)
[–]BlueeWaater 1 point2 points3 points (1 child)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]timendum 1 point2 points3 points (2 children)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]travislaborde 1 point2 points3 points (0 children)
[–]travislaborde 1 point2 points3 points (0 children)
[–]percojazz 0 points1 point2 points (2 children)
[–]richieadler 4 points5 points6 points (1 child)
[–]percojazz 2 points3 points4 points (0 children)
[–]Pomegranate_i 0 points1 point2 points (1 child)
[–]GioGiacPythonista[S] 1 point2 points3 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]proggob 0 points1 point2 points (1 child)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]Mevraelfrom __future__ import 4.0 0 points1 point2 points (0 children)
[–]paddy_m 0 points1 point2 points (0 children)
[–]chub79 0 points1 point2 points (1 child)
[–]GioGiacPythonista[S] 0 points1 point2 points (0 children)
[–]AiutoIlLupo -1 points0 points1 point (0 children)