{"id":16482321,"url":"https://github.com/uesteibar/minerva","last_synced_at":"2025-10-28T13:07:34.006Z","repository":{"id":57526730,"uuid":"96476853","full_name":"uesteibar/minerva","owner":"uesteibar","description":"Elixir framework for easily writing koans.","archived":false,"fork":false,"pushed_at":"2017-07-09T14:15:04.000Z","size":36,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T20:16:26.117Z","etag":null,"topics":["elixir","elixir-lang","elixir-library","framework","koans"],"latest_commit_sha":null,"homepage":"https://hex.pm/packages/minerva","language":"Elixir","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/uesteibar.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-06T22:25:39.000Z","updated_at":"2024-10-17T09:15:28.000Z","dependencies_parsed_at":"2022-09-07T02:52:34.008Z","dependency_job_id":null,"html_url":"https://github.com/uesteibar/minerva","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uesteibar%2Fminerva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uesteibar%2Fminerva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uesteibar%2Fminerva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uesteibar%2Fminerva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uesteibar","download_url":"https://codeload.github.com/uesteibar/minerva/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245097196,"owners_count":20560311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elixir","elixir-lang","elixir-library","framework","koans"],"created_at":"2024-10-11T13:10:23.041Z","updated_at":"2025-10-28T13:07:28.952Z","avatar_url":"https://github.com/uesteibar.png","language":"Elixir","readme":"# Minerva\n\n[![Hex Version](https://img.shields.io/hexpm/v/minerva.svg)](https://hex.pm/packages/minerva)\n\nMinerva is a framework for [Elixir](http://elixir-lang.org/) that will allow you to easily write koans.\n\nWith very little setup, it will allow you to write koans in plain elixir and run them automagically every time the user modifies the file.\n\nThe DSL is inspired in [elixir-koans](https://github.com/elixirkoans/elixir-koans). Thanks!\n\n## Index\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Running Locally](#running-locally)\n- [Contributing](#contributing)\n\n## Installation\n\nAdd `minerva` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [{:minerva, \"~\u003e 0.2.5\"}]\nend\n```\n\n## Usage\n\nAdd it to your supervision tree, passing a list of your koan modules as argument.\n\nIn your `application.ex` file (If you're in a supervised project):\n```elixir\ndef start(_type, _args) do\n  import Supervisor.Spec, warn: false\n\n  children = [\n    worker(Minerva, [[MyApp.AwesomeKoan]]),\n  ]\n\n  opts = [strategy: :one_for_one, name: MyApp.Supervisor]\n  Supervisor.start_link(children, opts)\nend\n```\n\nOr you can just start up the server with:\n```elixir\nMinerva.start_link([MyApp.AwesomeKoan])\n```\n\nIn your `config.exs` file, let `minerva` know where your koans live:\n```elixir\nconfig :minerva, files: \"lib/my_app/koans\"\n```\n\nNow you can start writing *koans*:\n```elixir\ndefmodule MyApp.AwesomeKoan do\n  use Minerva.Koans\n\n  koan \"You can use variables\" do\n    var = ___\n\n    assert 1 == var\n  end\n\n  koan \"You can add numbers\" do\n    assert 1 + 3 == ___\n  end\nend\n```\n\nSee that `___` represents a gap the user should fill to make the koan pass.\n\nYou can now run your project with\n```\nmix run --no-halt\n```\n\nYou'll see something like:\n```\nWelcome to the koan!\n######################\n\nThe exercises are found somewhere under lib/my_app/koans.\nJust fill the gaps (anywhere you see ___, that's a gap),\nsave the file and come back here!\n\nModule: AwesomeKoan\nKoan:   You can compare variables\n\n  var = ___\n\n  assert(1 == var)\n\nMeditate a little bit and try again =)\n```\n\nTime to go to your editor and start filling the gaps!\nThe code will be reloaded and the koans will run every time you save a koan file.\n\nEnjoy!\n\nDocumentation can be found on [HexDocs](https://hexdocs.pm/minerva).\n\n## Running locally\n\nClone the repository\n```bash\ngit clone git@github.com:uesteibar/minerva.git\n```\n\nInstall dependencies\n```bash\ncd minerva \u0026\u0026 mix deps.get\n```\n\nTo run the tests\n```bash\nmix test\n```\n\nTo run the lint\n```elixir\nmix credo\n```\n\n## Contributing\n\nPull requests are always welcome =)\n\nThe project uses [standard-changelog](https://github.com/conventional-changelog/conventional-changelog) to update the [Changelog](https://github.com/uesteibar/minerva/blob/master/CHANGELOG.md) with each commit message and upgrade the package version.\nFor that reason every contribution should have a title and body that follows the [conventional commits standard](https://conventionalcommits.org/) conventions (e.g. `feat(runner): Make it smarter than Jarvis`).\n\nTo make this process easier, you can do the following:\n\nInstall `commitizen` and `cz-conventional-changelog` globally\n```bash\nnpm i -g commitizen cz-conventional-changelog\n```\n\nSave `cz-conventional-changelog` as default\n```bash\necho '{ \"path\": \"cz-conventional-changelog\" }' \u003e ~/.czrc\n```\n\nInstead of `git commit`, you can now run\n```\ngit cz\n```\nand follow the instructions to generate the commit message.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuesteibar%2Fminerva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuesteibar%2Fminerva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuesteibar%2Fminerva/lists"}