{"id":37721808,"url":"https://github.com/iacchus/quickdiary","last_synced_at":"2026-01-16T13:33:21.445Z","repository":{"id":57459409,"uuid":"460154862","full_name":"iacchus/quickdiary","owner":"iacchus","description":"Utility to record diary logs via command line","archived":false,"fork":false,"pushed_at":"2023-12-04T17:40:31.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-25T13:24:30.262Z","etag":null,"topics":["diary","diary-application","note-taking-app","notes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iacchus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.rst","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-16T19:48:18.000Z","updated_at":"2022-02-17T18:23:16.000Z","dependencies_parsed_at":"2022-09-10T15:41:28.653Z","dependency_job_id":null,"html_url":"https://github.com/iacchus/quickdiary","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/iacchus/quickdiary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iacchus%2Fquickdiary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iacchus%2Fquickdiary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iacchus%2Fquickdiary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iacchus%2Fquickdiary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iacchus","download_url":"https://codeload.github.com/iacchus/quickdiary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iacchus%2Fquickdiary/sbom","scorecard":{"id":477092,"data":{"date":"2025-08-11","repo":{"name":"github.com/iacchus/quickdiary","commit":"a2bee249e3dbde8a5fff5295e7b49c4c083cddc9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42969"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T15:36:54.637Z","repository_id":57459409,"created_at":"2025-08-19T15:36:54.637Z","updated_at":"2025-08-19T15:36:54.637Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":["diary","diary-application","note-taking-app","notes"],"created_at":"2026-01-16T13:33:19.383Z","updated_at":"2026-01-16T13:33:21.438Z","avatar_url":"https://github.com/iacchus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# quickdiary \n\n| **Licensed with [GNU AGPLv3](https://github.com/iacchus/agplv3-resources/blob/master/LICENSE/LICENSE)**                                                                        |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| [![agpl3](https://raw.githubusercontent.com/birdears/birdears/master/docs/_static/img/agplv3-155x51.png)](https://github.com/iacchus/quickdiary/blob/main/LICENSE.txt) |\n\nSimple command to add timestamped entries to a text file using `$EDITOR`.\n\n[![Maintenance](https://img.shields.io/maintenance/yes/2022.svg?style=flat-square)](https://github.com/iacchus/quickdiary/issues/new?title=Is+quickdiary+still+maintained\u0026body=Please+file+an+issue+if+the+maintained+button+says+no)\n[![PyPI Status](https://img.shields.io/pypi/status/quickdiary.svg?style=flat-square\u0026label=pypi-status)](https://pypi.python.org/pypi/quickdiary)\n[![PyPI Version](https://img.shields.io/pypi/v/quickdiary.svg?style=flat-square)](https://pypi.python.org/pypi/quickdiary)\n[![PyPI Python Versions](https://img.shields.io/pypi/pyversions/quickdiary.svg?style=flat-square)](https://pypi.python.org/pypi/quickdiary)\n\n## Requirements\n\n```\n                                                               ┌──────────────┐\n                                                               │ GNU/Linux    │\n                                                               │ Python 3     │\n                                                               │ Python 3 Pip │\n                                                               └──────────────┘\n```\n\n## Installing\n\n```\npip install quickdiary\n```\n\n## Usage\n\n```sh\nquickdiary\n```\n\nThe name is long because is expected the user to create his own alias, for example, add to `.bashcr` or `.zshrc` or similar the alias below.\n\n**If no filename is given** in the command-line/command alias, it defaults to `~/diary.quickdiary`. Why such an absurd name and place, you may ask? That's because we think it is better the user itself in their alias to choose his own filenames for diaries as needed; we, though, suggest you use one of the file extensions `.quickdiary` or `.qdiary` so that it is easier to find the files later on the filesystem, being that you can have various different diaries with different names in different places.\n\n#### Adding alias\n\n```\nalias qd='quickdiary prompt'\nalias qdc='quickdiary cat'\n```\n\nor even shorter\n\n```\nalias a='quickdiary prompt'  # 'a' for add\nalias v='quickdiary cat'  # 'v' for view\n```\n\nThen you use the command `qd` to quickly add a timestamped text entry.\n\n## Options\n\n```sh\n$ quickdiary --help\nUsage: quickdiary [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  cat     Prints the diary file to stdout.\n  edit    Opens the diary file in $EDITOR or $QUICKDIARY_EDITOR.\n  pager   Opens the diary file in $PAGER or $QUICKDIARY_PAGER.\n  prompt  Prompts for the entry to be added to the diary.\n  write   Writes to diary using configured editor.\n```\n\nYou also can see each command's help using `quickdiary \u003ccommand\u003e --help`, *eg*.:\n\n### quickdiary write\n\n```sh\n$ quickdiary write --help\nUsage: quickdiary write [OPTIONS]\n\n  Writes to diary using configured editor.\n\nOptions:\n  -f, --file \u003cfilename\u003e  File to add entry\n  --help                 Show this message and exit.\n\n  Writes to diary file using $EDITOR or $QUICKDIARY_EDITOR\n```\n\n### quickdiary prompt\n\n```sh\n$ quickdiary prompt --help\nUsage: quickdiary prompt [OPTIONS]\n\n  Prompts for the entry to be added to the diary.\n\nOptions:\n  -f, --file \u003cfilename\u003e  File to add entry\n  -t, --text \u003ctext\u003e      Text entry to write to the diary\n  --help                 Show this message and exit.\n\n  Prompts for the text to add to the diary.\n```\n\n### quickdiary edit\n\n```sh\n$ quickdiary edit --help\nUsage: quickdiary edit [OPTIONS]\n\n  Opens the diary file in $EDITOR or $QUICKDIARY_EDITOR.\n\nOptions:\n  -f, --file \u003cfilename\u003e  File to add entry\n  --help                 Show this message and exit.\n\n  Opens the diary file in the configured text editor.\n```\n\n### quickdiary pager\n\n```sh\n$ quickdiary pager --help\nUsage: quickdiary pager [OPTIONS]\n\n  Opens the diary file in $PAGER or $QUICKDIARY_PAGER.\n\nOptions:\n  -f, --file \u003cfilename\u003e  File to add entry\n  --help                 Show this message and exit.\n\n  Opens the diary file in the configured environment pager.\n```\n\n### quickdiary cat\n\n```sh\n$ quickdiary cat --help\nUsage: quickdiary cat [OPTIONS]\n\n  Prints the diary file to stdout.\n\nOptions:\n  -f, --file \u003cfilename\u003e  File to add entry\n  --help                 Show this message and exit.\n\n  Prints the diary file to stdout.\n```\n\n\n## Environment Variables\n\nThese variables can be set in you env to change quicidiary defaults.\n\n```sh\nexport QUICKDIARY_FILENAME=\"~/diary.quickdiary\"\nexport QUICKDIARY_DATE_FORMAT=\"%A, %B {day_of_month}, %Y\"\nexport QUICKDIARY_TIME_FORMAT \"%H:%M:%S: \"\nexport QUICKDIARY_EDITOR=\"$EDITOR\"\nexport QUICKDIARY_EDITOR_PARAMS=\"+norm GA\"  # in vim, go to the end of the last line\nexport QUICKDIARY_PAGER=\"$PAGER\"\nexport QUICKDIARY_PAGER_PARAMS=\"\"\nexport QUICKDIARY_PRE_DATE_STRING=\"\\n\\n\"  # only if it's not a new file\nexport QUICKDIARY_PRE_ENTRY_STRING=\"\\n\\n\"\n```\n\nThe variables for date and time are [those from python's `strftime`](https://docs.python.org/3/library/datetime.html?highlight=strftime#strftime-and-strptime-format-codes)\n\nDescription of the ENV variables:\n\n**QUICKDIARY_FILENAME** - Is the diary filename; it will be created if it doesn't exist.\n\n**QUICKDIARY_DATE_FORMAT** - Is the date format. It is added one time a day, when the first entry of the day is added.\n\n**QUICKDIARY_TIME_FORMAT** - It is the time format for each entry. It is added before each entry.\n\n**QUICKDIARY_EDITOR** - When in `edit` mode, this will be the editor with which edit the new entry. (Default for env's $EDITOR, expecting it is `vim`/`nvim`)\n\n**QUICKDIARY_EDITOR_PARAMS** - These are the parameters to be passed to the editor before the diary file name. Defaults to *vim*'s \"**+norm GA**\" which in *normal mode* (**+norm**) *goes to the end of the file* (**G**) and to the end of that line (**A**). As said before, it is expected the user uses vim, otherwise these parameters need to be changed or nulled, like this way:\n\n**QUICKDIARY_PAGER** - It is the pager used in `pager` mode.\n\n**QUICKDIARY_PAGER_PARAMS** - These are the pager parameters for the pager in `pager` mode.\n\n**QUICKDIARY_PRE_DATE_STRING** - String to add before dates to saparate from the past items etc. Newlines. It is not added when on a new file, as in this case there are no previous items.\n\n**QUICKDIARY_PRE_ENTRY_STRING** - String to add before diary entries to separate them from the past items; how many newlines to separate them etc.\n\n```sh\nexport QUICKDIARY_EDITOR_PARAMS=\"\"\n```\n\n## Development \u0026 Philosophy\n\nThe idea is having a simple program to manage quick diary entries or notes, time stamped.\n\nNotes should be able to comply to all of these:\n\n* ***Quick to add***, *eg*.: terminal command-alias `qd` -\u003e type text line -\u003e press `enter`, done; inserted in date and with current time.\n* ***Possibility to rich-edit*** using editor, *eg*: type alias `qde` -\u003e open text editor with the cursor in place -\u003e edit -\u003e save, done. This without corrupting the following:\n* ***Easily readable programatically***, so we can program features over the notes.\n* ***Easily human-readable***.\n* After and only after all these, should be customizable.\n\nSo new features will be developed based on these points.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiacchus%2Fquickdiary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiacchus%2Fquickdiary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiacchus%2Fquickdiary/lists"}