{"id":13401490,"url":"https://github.com/aviaviavi/toodles","last_synced_at":"2026-02-19T08:02:12.765Z","repository":{"id":41128677,"uuid":"149829858","full_name":"aviaviavi/toodles","owner":"aviaviavi","description":"Project management directly from the TODOs in your codebase","archived":false,"fork":false,"pushed_at":"2023-04-18T21:04:04.000Z","size":439,"stargazers_count":979,"open_issues_count":14,"forks_count":32,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-12-26T22:53:31.280Z","etag":null,"topics":["management","project-management","todo","tracking"],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/aviaviavi.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2018-09-21T23:49:17.000Z","updated_at":"2025-12-21T15:58:40.000Z","dependencies_parsed_at":"2024-01-13T19:25:04.255Z","dependency_job_id":"28ae5775-60db-4839-95a5-6e2e6750fc9b","html_url":"https://github.com/aviaviavi/toodles","commit_stats":{"total_commits":184,"total_committers":13,"mean_commits":"14.153846153846153","dds":0.2282608695652174,"last_synced_commit":"b52902c2c34c9d21d604b255ec6ec92974d8661b"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aviaviavi/toodles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviaviavi%2Ftoodles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviaviavi%2Ftoodles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviaviavi%2Ftoodles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviaviavi%2Ftoodles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aviaviavi","download_url":"https://codeload.github.com/aviaviavi/toodles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviaviavi%2Ftoodles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29608152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T06:47:36.664Z","status":"ssl_error","status_checked_at":"2026-02-19T06:45:47.551Z","response_time":117,"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":["management","project-management","todo","tracking"],"created_at":"2024-07-30T19:01:03.364Z","updated_at":"2026-02-19T08:02:12.746Z","avatar_url":"https://github.com/aviaviavi.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"# Toodles\n\n[![Hackage](https://img.shields.io/hackage/v/toodles.svg)](https://hackage.haskell.org/package/toodles)\n[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/toodles-todos/community)\n\nToodles scrapes your entire repository for TODO entries and organizes them so\nyou can manage your project directly from the code. View, filter, sort, and edit\nyour TODO's with an easy to use web application. When you make changes via\ntoodles, the edits will be applied directly the TODO entries in your code.\nWhen you're done, commit and push your changes to share them with your team!\n\n![Toodles Screenshot](https://i.imgur.com/DEwzMYn.png)\n\n### TODO details\n\nSpecify details about your TODO's so that you can filter and sort them with\nease! Specify details within parenthesis and separate with the `|` delimeter.\n\n```python\n# TODO(assignee|p=1|keys=vals|#tags)\n```\n\n#### Priority\n\nThe key `p=\u003cinteger\u003e` will be interpreted as a priority number\n\n#### KeyVals\n\nUse arbitrary key value pairs `\u003ckey\u003e=\u003cvalue\u003e|\u003ckey2\u003e=\u003cvalue2\u003e|...` and design any\norganization scheme you wish! A good use for this is to enter dates of deadlines\nfor TODO's that you can sort on in Toodles\n\n#### Tags\n\nA detail starting with `#`, eg `#bug|#techdebt|#database|...` will be interpreted as\na tag, which can be used to label and group your TODO's.\n\n#### Assign\n\nAssign your TODO's to someone. Any plain word that will be interpreted as an assignee.\n\n```python\n# TODO(bob) - something we need to do later\n```\n\n### Per Project Configuration\n\nYou can configure toodles by putting a `.toodles.yaml` file in the root of your\nproject. See this repo's `.toodles.yaml` for the full configuration spec.\n\nCurrently via config you can:\n\n- Set files to ignore via a list of regular expressions\n- Specify your own flags to scan for other than the built-ins (TODO, FIXME, XXX)\n\n#### Ignoring Files\n\nIgnore as many files as you can! Large autogenerated files will slow Toodles\ndown quite a bit. Check the output of the server to see any files/folders that\nmay be causing slowness for your repo and add them to the `ignore` section your\n`.toodles.yaml` If the performance of Toodles is not good enough for your use\ncase, please open an issue.\n\n### Scanned Languages\n\nThese languages will be scanned for any TODO's:\n\n- C/C++\n- C#\n- CSS/SASS\n- Elixir\n- Erlang\n- Go\n- Haskell\n- HTML\n- Java\n- Javascript\n- Kotlin\n- Lua\n- Objective-C\n- PHP\n- Plaintext files (`*.txt`)\n- Protobuf\n- Python\n- React Javascript (JSX)\n- Ruby\n- Rust\n- Scala\n- Shell / Bash\n- Swift\n- Typescript\n- Vue (scripts only)\n- Yaml\n\nSubmit a PR if you'd like a language to be added. There will eventually be\nsupport for this to be user configurable\n\n### Installing with Docker\n\nYou can run a pre-built toodles for your current directory via docker:\n\n```bash\n# execute toodles for the directory you are currently in:\n$ docker run -it -v $(pwd):/repo -p 9001:9001 docker.avi.press/aviaviavi/toodles\n```\n\nJust mount your project into the container's `/repo` and direct a port of your\nchoice to the container's `9001`.\n\n### Building Toodles\n\nToodles builds with  [stack](https://docs.haskellstack.org). Just a `stack\nbuild` should do it. If you'd like to build toodles without cloning the source,\nyou can have stack build toodles with `stack install --resolver=lts-12.14 toodles`!\n\n#### Building with Docker\n\nFor convenience this repository also provides a `Dockerfile` to automatically\nbuild toodles.\n\n```bash\n# to build container run:\n$ cd /path/to/toodles/repo\n$ docker build -t toodles Dockerfile.dev .\n# afterwards you can run the following command to execute toodles for the\n# directory you are currently in:\n$ docker run -it -v $(pwd):/repo -p 9001:9001 toodles\n\n```\n\n### Running\n\nInvoking `toodles` with no arguments will treat the current directory as the\nproject root and will start a server on port 9001. You can set these with the\n`-d` and `-p` flags, respectively.\n\n\n```bash\n# $ toodles -d \u003croot directory of your project\u003e -p \u003cport to run server\u003e\n# for more info run:\n# $ toodles --help\n$ toodles -d /path/to/your/project -p 9001\n# or simply\n$ toodles\n```\n\n### Contributing\n\nContributions in any form are welcome! A few bits of info:\n\n- Don't be shy, ask questions! Contributing to Toodles should be welcoming for\n  people at any level of programming familiarity. Whether it's a new feature,\n  bug fix, or docs, any contribution is very appreciated.\n- Open an issue or jump into the chat room on [gitter](https://gitter.im/toodles-todos/community)\n- Before you start coding, please comment or mark a particular issue as \"in\n  progress\", or even open your pull request as a work in progress (WIP). This is\n  to help avoid having multiple people work on the same thing.\n- If github issues don't cut it, feel free to reach out on gitter or twitter\n  [@avi_press](https://twitter.com/avi_press)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviaviavi%2Ftoodles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faviaviavi%2Ftoodles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviaviavi%2Ftoodles/lists"}