A modern, opinionated full-stack CookieCutter project template that prioritizes developer experience and cutting-edge tools.
Project description
Gatlen's Opinionated Template (GOTem)
Cutting-edge, opinionated, and ambitious project builder for power users and researchers.
[!WARNING] Not yet ready for production!
Gatlen's Opinionated Template
(Logo = CookieCutter + Gatlen's Stylistic Motif - The Troublesome Goose)
GOTem is forked from (and synced with) CookieCutter Data Science (CCDS) V2, one of the most popular, flexible, and well maintained Python templates out there. GOTem extends CCDS with carefully selected defaults, dependency stack, customizations, additional features (that I maybe should have spent time contributing to the original project), and contemporary best practices. Ready for not just data science but also general Python development, research projects, and academic work.
Key Features
- ๐ Modern Tooling & Living Template โ Start with built-in support for UV, Ruff, FastAPI, Pydantic, Typer, Loguru, and Polars so you can tackle cutting-edge Python immediately. Template updates as environment changes.
- ๐ Instant Git & CI/CD โ Enjoy automatic repo creation, branch protections, and preconfigured GitHub Actions that streamline your workflow from day one.
- ๐ค Small-Scale to Scalable โ Ideal for solo projects or small teams, yet robust enough to expand right along with your growth.
- ๐โโ๏ธ Start Fast, Stay Strong โ Encourages consistent structure, high-quality code, and minimal friction throughout your projectโs entire lifecycle.
- ๐ Full-Stack + Rare Boilerplates โ Covers standard DevOps, IDE configs, and publishing steps, plus extra setups for LaTeX assignments, web apps, CLI tools, and moreโperfect for anyone seeking a โone-stopโ solution.
Who is this for?
CCDS is white bread: simple, familiar, unoffensive, and waiting for your choice of toppings. GOTem is the expert-crafted and opinionated โeverything burger,โ fully loaded from the start for any task you want to do (so long as you want to do it in a specific way). Some of the selections might be an acquired taste and users are encouraged to leave them off as they start and perhaps not all will appreciate my tastes even with time, but it is the setup I find *delicious*.
| โ Use GOTem ifโฆ | โ Might Not Be for You ifโฆ |
|---|---|
| ๐ You Want the โEverything Burgerโ - Youโre cool with an opinionated, โfully loadedโ setup, even if you donโt use all the bells and whistles up front. - You love having modern defaults (FastAPI, Polars, Loguru). at the ready for any case life throws at you from school work to research to websites |
๐ฃ๏ธ Youโre a Minimalist - You prefer the bare bones or โdefaultโ approach. - GOTemโs many integrations and new libraries feel too โextraโ or opinionated for you, adding more complexity than you want. When you really just want to "get the task done". |
| ๐ Youโre a Learner / Explorer - You like experimenting with cutting-edge tools (Polars, Typer, etc.) even if theyโre not as common. - โModern Over Ubiquitousโ libraries excite you. |
๐ฐ๏ธ Youโre a Legacy Lover - Tried-and-true frameworks (e.g., Django, Pandas, standard logging) give you comfort. - Youโd rather stick to old favorites than wrestle with fresh tech that might be less documented. |
| ๐จโ๐ป Youโre a Hacker / Tinkerer - You want code thatโs as sexy and elegant as it is functional. - You love tinkering, customizing, and โpretty colorsโ that keep the ADHD brain wrinkled. |
๐ Youโre a Micro-Optimizer - You need to dissect every configuration before even starting. - GOTemโs โAspirational Over Practicalโ angle might make you wary of unproven or cutting-edge setups. |
| โก Youโre a Perfection & Performance Seeker - You enjoy pushing Pythonโs boundaries in speed, design, and maintainability. - You're always looking for the best solution, not just quick patches. |
๐๏ธ You Need Old-School Stability - You want a large, established user base and predictable release cycles. - You get uneasy about lesser-known or younger libraries that might break your production environment. |
| ๐โโ๏ธ Youโre a Quick-Start Enthusiast - You want a template that practically configures itself so you can jump in. - You like having robust CI/CD, Git setup, and docs all done for you. |
๐ถโโ๏ธ You Prefer Slow, Manual Setups - You donโt mind spending time creating everything from scratch for each new project. - Doing things the classic or โofficialโ way is more comfortable than using โopinionatedโ shortcuts. |
If the right-hand column describes you better, CookieCutter Data Science (CCDS) or another minimal template might be a better fit.
View the full documentation here โก๏ธ
Getting Started
โก๏ธ With UV (Recommended)
uv tool install gatlens-opinionated-template
# From the parent directory where you want your project
uvx --from gatlens-opinionated-template gotem
๐ฆ With Pipx
pipx install gatlens-opinionated-template
# From the parent directory where you want your project
gotem
๐ With Pip
pip install gatlens-opinionated-template
# From the parent directory where you want your project
gotem
The resulting directory structure
The directory structure of your new project will look something like this (depending on the settings that you choose):
๐ .
โโโ โ๏ธ .cursorrules <- LLM instructions for Cursor IDE
โโโ ๐ป .devcontainer <- Devcontainer config
โโโ โ๏ธ .gitattributes <- GIT-LFS Setup Configuration
โโโ ๐งโ๐ป .github
โ โโโ โก๏ธ actions
โ โ โโโ ๐ setup-python-env <- Automated python setup w/ uv
โ โโโ ๐ก ISSUE_TEMPLATE <- Templates for Raising Issues on GH
โ โโโ ๐ก pull_request_template.md <- Template for making GitHub PR
โ โโโ โก๏ธ workflows
โ โโโ ๐ main.yml <- Automated cross-platform testing w/ uv, precommit, deptry,
โ โโโ ๐ on-release-main.yml <- Automated mkdocs updates
โโโ ๐ป .vscode <- Preconfigured extensions, debug profiles, workspaces, and tasks for VSCode/Cursor powerusers
โ โโโ ๐ launch.json
โ โโโ โ๏ธ settings.json
โ โโโ ๐ tasks.json
โ โโโ โ๏ธ '{{ cookiecutter.repo_name }}.code-workspace'
โโโ ๐ data
โ โโโ ๐ external <- Data from third party sources
โ โโโ ๐ interim <- Intermediate data that has been transformed
โ โโโ ๐ processed <- The final, canonical data sets for modeling
โ โโโ ๐ raw <- The original, immutable data dump
โโโ ๐ณ docker <- Docker configuration for reproducability
โโโ ๐ docs <- Project documentation (using mkdocs)
โโโ ๐ฉโโ๏ธ LICENSE <- Open-source license if one is chosen
โโโ ๐ logs <- Preconfigured logging directory for
โโโ ๐ทโโ๏ธ Makefile <- Makefile with convenience commands (PyPi publishing, formatting, testing, and more)
โโโ ๐ Taskfile.yml <- Modern alternative to Makefile w/ same functionality
โโโ ๐ notebooks <- Jupyter notebooks
โ โโโ ๐ 01_name_example.ipynb
โ โโโ ๐ฐ README.md
โโโ ๐๏ธ out
โ โโโ ๐ features <- Extracted Features
โ โโโ ๐ models <- Trained and serialized models
โ โโโ ๐ reports <- Generated analysis
โ โโโ ๐ figures <- Generated graphics and figures
โโโ โ๏ธ pyproject.toml <- Project configuration file w/ carefully selected dependency stacks
โโโ ๐ฐ README.md <- The top-level README
โโโ ๐ secrets <- Ignored project-level secrets directory to keep API keys and SSH keys safe and separate from your system (no setting up a new SSH-key in ~/.ssh for every project)
โ โโโ โ๏ธ schema <- Clearly outline expected variables
โ โโโ โ๏ธ example.env
โ โโโ ๐ ssh
โ โโโ โ๏ธ example.config.ssh
โ โโโ ๐ example.something.key
โ โโโ ๐ example.something.pub
โโโ ๐ฐ '{{ cookiecutter.module_name }}' <- Easily publishable source code
โโโ โ๏ธ config.py <- Store useful variables and configuration (Preset)
โโโ ๐ dataset.py <- Scripts to download or generate data
โโโ ๐ features.py <- Code to create features for modeling
โโโ ๐ modeling
โ โโโ ๐ __init__.py
โ โโโ ๐ predict.py <- Code to run model inference with trained models
โ โโโ ๐ train.py <- Code to train models
โโโ ๐ plots.py <- Code to create visualizations
Contributing โค๏ธ
If you plan major changes, consider upstreaming them to CookieCutter Data Science (CCDS). For minor fixes or adjustments to GOTem, submit an issue or pull request here. See CONTRIBUTING.md for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gatlens_opinionated_template-0.4.3.tar.gz.
File metadata
- Download URL: gatlens_opinionated_template-0.4.3.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.26
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35ed76f7e96548910fb89ef44ca67620c5c449570265b666eefb83909c508479
|
|
| MD5 |
37436bcd2b25edf478044fb21a41c6cc
|
|
| BLAKE2b-256 |
23eb2635a2b9a3b7f87fa1c9fe24df9eb2da78561fc6638e9d5ed769663436ad
|
File details
Details for the file gatlens_opinionated_template-0.4.3-py3-none-any.whl.
File metadata
- Download URL: gatlens_opinionated_template-0.4.3-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.26
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7e683b05cda7c4ae171c81c8638d75c68d1a3907421b7d35906cf2afc0f6749
|
|
| MD5 |
a21061f6ea825777b9998e530cfd2fd2
|
|
| BLAKE2b-256 |
215e57d5aa9c6bd2f220643156fc676a0dc59992b272f04106db5ce3ad1297bb
|