how to use uv to manage the environment, how to create a well-structured project repo, how to write a basic script with a main() function, how to switch from print to logging, how to use linting tools, how to write unit and integration tests, how to convert a script to a CLI tool with argparse, how to manage secrets and load with dotenv, how to use git for version control, how to use GitHub actions for automatic CI/CD, how to create branches and pull requests, how to use Make to simplify this, and how to import a github repo into another project (or from local as editable). ## Flat vs src layout Python community recommends the src layout Many data science projects start with a flat layout. You'll see this convention used in pandas, llamaindex, etc. This is fine for most applications, but really should be avoided for packages that are intended to be shared on PyPI. UV handles this with the --package flag ``` uv init --package my-project ``` Your application code will go in a src/ fodler. To learn more, see [here](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/).