{"id":41850472,"url":"https://github.com/mkaramuk/tohum","last_synced_at":"2026-01-25T10:20:44.086Z","repository":{"id":287716582,"uuid":"965582822","full_name":"mkaramuk/tohum","owner":"mkaramuk","description":"🌱 tohum - CLI tool to provison new projects from templates","archived":false,"fork":false,"pushed_at":"2026-01-18T18:36:18.000Z","size":384,"stargazers_count":8,"open_issues_count":9,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-19T02:46:43.137Z","etag":null,"topics":["project","rust","template","template-engine","tool"],"latest_commit_sha":null,"homepage":"https://tohum.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkaramuk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-13T13:37:36.000Z","updated_at":"2025-11-27T08:25:06.000Z","dependencies_parsed_at":"2025-08-09T18:14:46.202Z","dependency_job_id":"fd0d4580-72c9-4d8e-8024-55d5fc2b2e66","html_url":"https://github.com/mkaramuk/tohum","commit_stats":null,"previous_names":["mkaramuk/maker","mkaramuk/tohum"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mkaramuk/tohum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkaramuk%2Ftohum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkaramuk%2Ftohum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkaramuk%2Ftohum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkaramuk%2Ftohum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkaramuk","download_url":"https://codeload.github.com/mkaramuk/tohum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkaramuk%2Ftohum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28751456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T09:58:17.166Z","status":"ssl_error","status_checked_at":"2026-01-25T09:55:56.104Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["project","rust","template","template-engine","tool"],"created_at":"2026-01-25T10:20:43.321Z","updated_at":"2026-01-25T10:20:44.069Z","avatar_url":"https://github.com/mkaramuk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo_32_x_32.svg\" alt=\"tohum logo\" title=\"You should finish the projects that you have started\" width=100/\u003e\u003cbr\u003e\n  \u003ch1 style=\"margin-top: 10px; margin-bottom: 5px;\"\u003etohum\u003c/h1\u003e\n  \u003cp style=\"margin-top: 0;\"\u003e\u003cem\u003eA CLI tool for planting project seeds\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n![Crates.io Version](https://img.shields.io/crates/v/tohum)\n![GitHub License](https://img.shields.io/github/license/mkaramuk/tohum)\n[![Issues](https://img.shields.io/github/issues/mkaramuk/tohum)](https://github.com/mkaramuk/tohum/issues)\n![GitHub contributors](https://img.shields.io/github/contributors/mkaramuk/tohum)\n[![StandWithPalestine](https://raw.githubusercontent.com/TheBSD/StandWithPalestine/main/badges/StandWithPalestine.svg)](https://github.com/TheBSD/StandWithPalestine/blob/main/docs/README.md)\n\n\u003cimg src=\"./assets/meme.jpg\" alt=\"meme\" title=\"You should finish the projects that you have started\" width=200/\u003e\n\u003chr /\u003e\n\n\"tohum\" (/toˈhuːm/, meaning \"seed\" in Turkish) is a CLI tool for initializing new projects from pre-defined seeds (aka templates).\n\n\u003e ⚠️ **WARNING** ⚠️\n\u003e tohum is in its early stage of development, so expect breaking changes.\n\n## Installation\n\n### Dependencies\n\n- [git](https://git-scm.com/)\n- [openssl](https://github.com/openssl/openssl)\n\n### cargo\n\nCurrently, tohum is only published on the cargo registry, which means you can simply use cargo to install it:\n\n```sh\ncargo install tohum\n```\n\n### Build from source\n\nAnother option (which is not very different from installing via cargo) is building from source. For this option you must have a Rust toolchain. You can install it by simply using [rustup](https://rustup.rs/).\n\n```shell\ngit clone https://github.com/mkaramuk/tohum.git \u0026\u0026 cd tohum\ncargo build --release\nsudo ./install.sh # Installs the binary to /usr/local/bin/tohum (Linux only)\n```\n\n## Quickstart\n\nLet's list all the seeds in the default silo:\n\n```sh\n$ tohum silo list\n\n🌱 Found 1 seeds in the silo:\n────────────────────────────────────────\n  • @ts/cli\n    Node.js project that configured for TypeScript. This seed uses \"tsup\" as the bundler.\n    by Muhammed Karamuk\n```\n\nNow we know what are the available seeds that we can use. Pick one and initialize a new project. For example:\n\n```sh\n$ tohum plant @ts/cli my-super-cli-project\nProject my-super-cli-project planted at my-super-cli-project from @ts/cli seed!\n```\n\nCongratulations! You've planted your first _tohum_ (seed)!\n\n## Building seeds\n\nA seed is a representation of your template project. It includes all the project files regardless of the framework or programming language in [tera](https://keats.github.io/tera/docs/) templating format and a special file called `.tohumrc`. This file includes all the necessary metadata information for the seed definition that is read by tohum.\n\n### Structure\n\nA typical seed directory looks like this:\n\n```\nmy-awesome-seed/\n├── .tohumrc\n└── ... other project files\n```\n\nHere is an example `.tohumrc` file:\n\n```jsonc\n{\n  // JSON schema definition. With this you may have intellisense in your IDE.\n  \"$schema\": \"https://raw.githubusercontent.com/mkaramuk/tohum/main/metadata.schema.json\",\n\n  // This name will be used in `tohum plant ...` command.\n  \"name\": \"my-seed\",\n\n  // An optional version for your seed. If omitted, set to 1.0.0 by default.\n  \"version\": \"1.0.0\",\n\n  // An optional description about what is your seed about.\n  \"description\": \"A description of my seed\",\n\n  // Optional metadata, tags.\n  \"tags\": [\"rust\", \"cli\"],\n\n  // Your seed must include at least one author.\n  \"authors\": [\n    {\n      // Required\n      \"name\": \"Jane Doe\",\n\n      // Optional\n      \"email\": \"jane@example.com\",\n\n      // Optional\n      \"website\": \"https://janedoe.com\",\n    },\n  ],\n\n  // All the possible templating variables that can be used with this seed.\n  \"variables\": {\n    \"project_name\": {\n      \"type\": \"string\",\n\n      \"description\": \"The name of the project\",\n    },\n    \"license\": {\n      // Type of the variable, required\n      \"type\": \"string\",\n\n      // Optional, if defined and the user does not explicitly defines\n      // this variable in `tohum plant` command, then this value will be used.\n      \"default\": \"MIT\",\n\n      // Optional\n      \"description\": \"License type\",\n\n      // Optional, if set to `true` then \"tohum plant\" forces this variable\n      // to be passed via `-v` flag.\n      \"required\": true,\n    },\n  },\n}\n```\n\nSome of the variables are auto defined by tohum and always available in your template context:\n\n| Name         | Description                                   | Type                                                                                      |\n| ------------ | --------------------------------------------- | ----------------------------------------------------------------------------------------- |\n| project_name | Project name set inside `tohum plant` command | string                                                                                    |\n| authors      | Authors array set inside `.tohumrc` file      | Array\u003c{ name: string, email: string OR not available, website: string OR not available }\u003e |\n\n### Publishing\n\nYour seeds need to be stored in a silo. A silo is simply a git repository that includes seeds. tohum uses this repository as the default silo (you can find seeds inside silo/ directory). You can structure your silo as you wish as long as it includes valid seeds, tohum will recursively scan the entire repo.\n\nTo publish your seeds you have two options:\n\n- Create a silo (a new git repository) and tell people to use `tohum -s \u003cyour repo address\u003e` so they will use your silo as the seed source.\n- Open an issue in this repository to add your seed into the default silo.\n\nSince tohum uses git to manage silos, you can even use local git repository as a silo by specifying their path via `-s \u003clocal git repo path\u003e` flag.\n\n## Contributing\n\nWe are open for all type of contributions including translations, adding and maintaining seeds, feature implementations and bug fixes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkaramuk%2Ftohum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkaramuk%2Ftohum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkaramuk%2Ftohum/lists"}