repository-template

Applies best practices for OSS repositories for Gitlab and Github

https://github.com/sdsc-ordes/repository-template

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.2%) to scientific vocabulary

Keywords

copier copier-template go justfile linux macos nix python repository-template rust treefmt-nix
Last synced: 6 months ago · JSON representation ·

Repository

Applies best practices for OSS repositories for Gitlab and Github

Basic Info
  • Host: GitHub
  • Owner: sdsc-ordes
  • License: apache-2.0
  • Language: Nix
  • Default Branch: main
  • Homepage:
  • Size: 209 KB
Statistics
  • Stars: 3
  • Watchers: 3
  • Forks: 0
  • Open Issues: 2
  • Releases: 3
Topics
copier copier-template go justfile linux macos nix python repository-template rust treefmt-nix
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

project logo

Repository Template

Current Release Pipeline Status License label

Authors:

Table of Content (click to expand) - [What Is This?](#what-is-this) - [Usage](#usage) - [Over Container](#over-container) - [By Cloning](#by-cloning) - [Arguments](#arguments) - [Structure](#structure) - [Generic Template](#generic-template) - [Toolchain](#toolchain) - [Rust Template](#rust-template) - [Toolchain](#toolchain) - [Go Template](#go-template) - [Toolchain](#toolchain) - [Python Template](#python-template) - [Toolchain](#toolchain) - [CI Implementations](#ci-implementations) - [Github Actions](#github-actions) - [Development](#development) - [Copyright](#copyright)

What Is This?

This is a repository template giving you a top-level structure with the following features.

  • Git & Git Large File System (LFS) configured.
  • Nix development shell enabled with direnv and .envrc.
  • Language specific best-practice setup for rust, go or python.
  • Formatting with treefmt-nix.
  • Githooks (optional) which runs pre-commit checks:
    • Git LFS checks.
    • Format with treefmt-nix.
  • Devcontainer: not-yet-provided (future, based on Nix dev shell)

Usage

Over Container

bash mkdir repo podman run -it -v "$(pwd)/repo:/workspace" \ ghcr.io/sdsc-ordes/repository-template:latest \ -t "<language>" -d "." [-- ["args-to-copier"...]]

[!CAUTION]

Using docker above will create root-owned files on your machine (by default without some user namespacing setup etc.), we strongly recommend using podman instead.

See arguments explanations here.

By Cloning

Clone this repository to some place of your choice.

Apply the templates with copier using the following:

bash cd repo && git pull just create -t "<language>" -d "<destination>" [-- ["args-to-copier"...]]

See arguments explanations here.

Arguments

  • <destination> is the destination folder where you want to place your new repository.
  • <language> is one of the following templates:

    • generic: For a generic repository without any language specific needs.
    • python: For python toolchain with uv and other good tooling.
    • rust: For a Rust toolchain with cargo
    • go: For a default Go toolchain.
  • [args-to-copier...] are optional arguments passed to copier. If you want to overwrite by default use -w and not answer Y all the time and -l to apply all defaults to inspect:

shell just create -t <language> -d <destination> -- -w -l

Structure

The following describes the content of the top-level directories:

  • docs : All documentation-related files. The README.md should link into this folder.
  • examples : Examples showing how to use this software component.
  • external : Third party resources imported with git submodules, vendir or other tools.
  • src: Where your source code lives.
  • tools: Specific needs which are not part of the source:
    • configs: config related files for certain tools like, e.g. formatters, linters etc.
    • nix: Nix related stuff.
    • ci: CI related tooling/scripts.
    • scripts: Additional scripts complementing the justfile etc.

Generic Template

Toolchain

Source

Rust Template

Toolchain

Source

  • Toolchain: Rust toolchain on nightly
  • Build-Tool: cargo
  • LSP: rust-analyzer
  • Formatter: rustfmt

Go Template

Toolchain

Source

  • Compiler: go at 1.23.X
  • Build-Tool: go
  • LSP: gopls
  • Formatter: gofmt, goimports, golines

Python Template

Template Source

Toolchain

CI Implementations

Github Actions

The following workflows are defined:

  • format.yaml: Formats the whole repository with treefmt, configured over Nix. For it to work with cachix (a Nix CI caching mechanism) you need to define two secrets in Settings -> Secrets & variables -> Actions -> Repositories secrets:

    • CACHIX_CACHE_NAME: The cache name you created on cachix.org. This is free for public caches, which is acceptable for OSS repositories.
    • CACHIX_AUTH_TOKEN: The access token created on cachix.org for this cache CACHIX_CACHE_NAME.

Development

Read first the Contribution Guidelines.

For technical documentation on setup and development, see the Development Guide

Copyright

Copyright © 2025-2028 Swiss Data Science Center (SDSC), www.datascience.ch. All rights reserved. The SDSC is jointly established and legally represented by the École Polytechnique Fédérale de Lausanne (EPFL) and the Eidgenössische Technische Hochschule Zürich (ETH Zürich). This copyright encompasses all materials, software, documentation, and other content created and developed by the SDSC.

Owner

  • Name: Swiss Data Science Center - ORD
  • Login: sdsc-ordes
  • Kind: organization
  • Location: Switzerland

Open Research Data team at the Swiss Data Science Center.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "repository-template"
authors:
  - family-names: "Gabriel"
    given-names: "Nuetzi"
    orcid: "https://orcid.org/0009-0008-8197-2851"
    affiliation: "SDSC - Swiss Data Science Center"
  - family-names: "Cyril"
    given-names: "Matthey-Doret"
    orcid: "https://orcid.org/0000-0002-1126-1535"
    affiliation: "SDSC - Swiss Data Science Center"
date-released: 2025-01-27
version: "1.0.0"
doi: "" # Replace with your DOI if applicable
url: ""
repository-code: "https://github.com/sdsc-ordes/repository-template"
keywords:
  - repository template
license: "apache-2.0"

GitHub Events

Total
  • Create event: 10
  • Issues event: 5
  • Release event: 2
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 5
  • Push event: 95
  • Public event: 1
  • Pull request review comment event: 9
  • Pull request review event: 15
  • Pull request event: 12
Last Year
  • Create event: 10
  • Issues event: 5
  • Release event: 2
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 5
  • Push event: 95
  • Public event: 1
  • Pull request review comment event: 9
  • Pull request review event: 15
  • Pull request event: 12

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 10
  • Average time to close issues: 4 minutes
  • Average time to close pull requests: 5 days
  • Total issue authors: 1
  • Total pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.8
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 10
  • Average time to close issues: 4 minutes
  • Average time to close pull requests: 5 days
  • Issue authors: 1
  • Pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.8
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • gabyx (2)
Pull Request Authors
  • gabyx (6)
  • cmdoret (3)
  • rmfranken (1)
Top Labels
Issue Labels
Pull Request Labels
enhancement (1) documentation (1)

Dependencies

.github/workflows/format.yaml actions
  • actions/checkout v4 composite
  • cachix/cachix-action v15 composite
  • cachix/install-nix-action v30 composite
src/rust/Cargo.lock cargo
  • anstream 0.6.18
  • anstyle 1.0.10
  • anstyle-parse 0.2.6
  • anstyle-query 1.1.2
  • anstyle-wincon 3.0.7
  • anyhow 1.0.95
  • clap 4.5.28
  • clap_builder 4.5.27
  • clap_derive 4.5.28
  • clap_lex 0.7.4
  • colorchoice 1.0.3
  • heck 0.5.0
  • is_terminal_polyfill 1.70.1
  • once_cell 1.20.2
  • proc-macro2 1.0.93
  • quote 1.0.38
  • strsim 0.11.1
  • syn 2.0.98
  • unicode-ident 1.0.16
  • utf8parse 0.2.2
  • windows-sys 0.59.0
  • windows-targets 0.52.6
  • windows_aarch64_gnullvm 0.52.6
  • windows_aarch64_msvc 0.52.6
  • windows_i686_gnu 0.52.6
  • windows_i686_gnullvm 0.52.6
  • windows_i686_msvc 0.52.6
  • windows_x86_64_gnu 0.52.6
  • windows_x86_64_gnullvm 0.52.6
  • windows_x86_64_msvc 0.52.6
src/go/src/{{ package_name }}/go.sum go
  • github.com/cpuguy83/go-md2man/v2 v2.0.4
  • github.com/davecgh/go-spew v1.1.1
  • github.com/golang-cz/devslog v0.0.11
  • github.com/inconshreveable/mousetrap v1.1.0
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/russross/blackfriday/v2 v2.1.0
  • github.com/spf13/cobra v1.8.1
  • github.com/spf13/pflag v1.0.5
  • github.com/stretchr/testify v1.10.0
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/yaml.v3 v3.0.1
src/python/uv.lock pypi
  • annotated-types 0.7.0
  • anyio 4.8.0
  • appnope 0.1.4
  • argon2-cffi 23.1.0
  • argon2-cffi-bindings 21.2.0
  • arrow 1.3.0
  • asttokens 3.0.0
  • async-lru 2.0.4
  • attrs 25.1.0
  • babel 2.17.0
  • beautifulsoup4 4.13.1
  • bleach 6.2.0
  • certifi 2025.1.31
  • cffi 1.17.1
  • charset-normalizer 3.4.1
  • colorama 0.4.6
  • comm 0.2.2
  • debugpy 1.8.12
  • decorator 5.1.1
  • defusedxml 0.7.1
  • executing 2.2.0
  • fastjsonschema 2.21.1
  • fqdn 1.5.1
  • h11 0.14.0
  • httpcore 1.0.7
  • httpx 0.28.1
  • idna 3.10
  • ipykernel 6.29.5
  • ipython 8.32.0
  • isoduration 20.11.0
  • jedi 0.19.2
  • jinja2 3.1.5
  • json5 0.10.0
  • jsonpointer 3.0.0
  • jsonschema 4.23.0
  • jsonschema-specifications 2024.10.1
  • jupyter-client 8.6.3
  • jupyter-core 5.7.2
  • jupyter-events 0.12.0
  • jupyter-lsp 2.2.5
  • jupyter-server 2.15.0
  • jupyter-server-terminals 0.5.3
  • jupyterlab 4.3.5
  • jupyterlab-pygments 0.3.0
  • jupyterlab-server 2.27.3
  • markupsafe 3.0.2
  • matplotlib-inline 0.1.7
  • mistune 3.1.1
  • mymodule 0.0.1
  • nbclient 0.10.2
  • nbconvert 7.16.6
  • nbformat 5.10.4
  • nest-asyncio 1.6.0
  • notebook 7.3.2
  • notebook-shim 0.2.4
  • overrides 7.7.0
  • packaging 24.2
  • pandocfilters 1.5.1
  • parso 0.8.4
  • pexpect 4.9.0
  • platformdirs 4.3.6
  • prometheus-client 0.21.1
  • prompt-toolkit 3.0.50
  • psutil 6.1.1
  • ptyprocess 0.7.0
  • pure-eval 0.2.3
  • pycparser 2.22
  • pydantic 2.10.6
  • pydantic-core 2.27.2
  • pygments 2.19.1
  • python-dateutil 2.9.0.post0
  • python-json-logger 3.2.1
  • pywin32 308
  • pywinpty 2.0.15
  • pyyaml 6.0.2
  • pyzmq 26.2.1
  • referencing 0.36.2
  • requests 2.32.3
  • rfc3339-validator 0.1.4
  • rfc3986-validator 0.1.1
  • rpds-py 0.22.3
  • send2trash 1.8.3
  • setuptools 75.8.0
  • six 1.17.0
  • sniffio 1.3.1
  • soupsieve 2.6
  • stack-data 0.6.3
  • terminado 0.18.1
  • tinycss2 1.4.0
  • tornado 6.4.2
  • traitlets 5.14.3
  • types-python-dateutil 2.9.0.20241206
  • typing-extensions 4.12.2
  • uri-template 1.3.0
  • urllib3 2.3.0
  • wcwidth 0.2.13
  • webcolors 24.11.1
  • webencodings 0.5.1
  • websocket-client 1.8.0
tools/configs/copier/pyproject.toml pypi