A simple template for research project repos. You can also use data science and reproducible science cookie cutters.
This template contains the following folders and files. See README.md in each folder for more details and guidelines.
srcfor project source code (installed as editable package).testsfor unit tests.datafor raw & derived datasets.libsfor third-party or vendored packages.modelsfor trained models.notebooksfor (timestamped) experiment notebooks.paperfor manuscripts.resultsfor results (figures, tables, etc.)notesfor research notes.workflowfor workflow files and scripts.dashboardfor the local project status and ownership view..gitignorefor temporary and generated files.
This template uses uv for Python environment management. Run the setup script for initial configuration:
./setup.sh # Install dependencies and configure environment.python-version— specifies the required Python release.venv/— virtual environment directory (created by uv)pyproject.toml— project metadata and dependency declarationsuv.lock— reproducible dependency snapshot (commit to version control).envrc— optional direnv configuration
uv add PACKAGE # Add dependency
uv sync # Install from lockfile
uv run script.py # Run script in virtual environmentSee Python environment setup for details.
ruff is included as a dev dependency. Use make lint to check for issues and make format to auto-format.
The setup script installs hooks when Git is using the repository's standard hook directory. To run every hook manually:
uv run pre-commit run --all-filesmake check— run formatting, linting, tests, and a workflow dry runmake all— run the example Snakemake pipelinemake dashboard— regenerate the local project status dashboard
Update dashboard/status.toml after meaningful project work, then run make dashboard and open dashboard/index.html.
The HTML file is generated locally and is not committed.