{"id":18763142,"url":"https://github.com/simre1/neonote","last_synced_at":"2025-12-05T22:30:15.370Z","repository":{"id":179880140,"uuid":"663539741","full_name":"Simre1/neonote","owner":"Simre1","description":"NeoNote is a terminal app to manage your notes","archived":false,"fork":false,"pushed_at":"2025-01-14T21:02:06.000Z","size":1892,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T22:18:50.617Z","etag":null,"topics":["haskell","journal","notes","notes-app"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Simre1.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}},"created_at":"2023-07-07T14:29:14.000Z","updated_at":"2025-01-14T21:02:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"824a3234-3bad-4b32-9c3f-95e6ee2757c0","html_url":"https://github.com/Simre1/neonote","commit_stats":null,"previous_names":["simre1/neonote"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simre1%2Fneonote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simre1%2Fneonote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simre1%2Fneonote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simre1%2Fneonote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Simre1","download_url":"https://codeload.github.com/Simre1/neonote/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239661789,"owners_count":19676409,"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":["haskell","journal","notes","notes-app"],"created_at":"2024-11-07T18:24:51.152Z","updated_at":"2025-12-05T22:30:15.335Z","avatar_url":"https://github.com/Simre1.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NeoNote\n\nNeoNote is a terminal app to manage your notes. NeoNote stores your notes for you and provides filtering and searching options to find them easily.\n\n![Animated showcase of NeoNote](recordings/showcase.gif)\nVideo is for version 0.1.0!\n\n## Features\n\n- Create/Edit/Delete Notes\n- Parses tags directly from your note\n- Filter notes based on tags, searches and creation/modification date\n\n## Installation\n\n### Binary files\n\nYou can find builds for linux x86 in the [releases section](https://github.com/Simre1/neonote/releases).\n\n### Build from source\n\nNeoNote is built with the Haskell build tool `cabal`. You'll need it along with a recent Haskell compiler.\n\nTo build from source, run:\n```bash\ncabal build all\n````\n\nThen, you will find the executable inside the `dist-newstyle` folder.\n\n## Get Started\n\nTake a look at the NeoNote help menu to get a quick overview of the commands and to explore the various options.\nEach command can be shortened to one letter, eg. `nn c` instead of `nn create`.\n\n### Create a note\n\n```\nnn create\n```\n\nAn editor will open where you can write your note.\nTags will be automatically found when you use the `#` symbol within a note.\nYou can also start composing your note directly in the terminal by just typing the text:\n```bash\nnn c \"Your first note with #neonote\"\n```\n\n### Using the note picker\n\nTo review already existing notes, you will normally use the picker UI. It can be opened with the following command:\n\n```\nnn pick\n```\n\nWithin this UI, you can incrementally search through your notes. It is possible to edit with `ENTER`, delete with `CTRL-X` and view with `CTRL-Y`.\n\n### Processing notes without the picker\n\n```\nnn edit\n```\n\n`edit` will directly open your editor with all matched notes.\nPer default, it will only match `1` note with no filtering.\nThis means it will open the note which was last modified. \n\nYou can specify a filter, a search term and the amount of notes to match. The following command\nwill open at most 3 notes with the word `todo`.\n```\nnn edit --number 3 todo\n```\n\nSimilarly to the `edit` command, there exist `delete` and `view` commands to delete and view multiple notes.\n\nThis will delete up to a hundred notes with the tag `#archived`.\n```\nnn delete --number 100 \"#archived\" \n```\n\nThis will view up to 10 notes with the word linux\n```\nnn view --number 10 linux\n```\n\n### List notes\n\nThe `list` command gives you an overview of your notes by printing them in a table. It gives you information about their modification date and their tags.\n\n```\nnn list\n```\n\nPer default, the modification date, the tags and a preview of the content is shown.\nYou can change which attributes of the note are shown with `--attribute` (`-a` for short):\n\n```\nnn list --attribute id --attribute created\n```\n\nNow, `id` and `created` will be shown instead of the default `modified` and `tags`.\nThe content preview will always be shown regardless of given attributes.\n\nOf course, you can combine this normal filtering and searching. The following\ncommand will list up to 5 notes with the word haskell. \n```\nnn l --number 5 haskell\n```\n\n## Tags\n\nYou can add a tag to your notes simply by writing `#your-tag` somewhere within the note.\nCurrently, tags may consist of english characters as well as `-` (no numbers!).\n\n## Filter notes\n\nYou can filter notes using the filter grammar.\n\n```\nnn view \"programming\"\n```\n\nThis will show you notes which contain the word `programming`.\nThis can also be used with `delete`, `edit` and `list`.\n\n### Boolean logic for filtering\n\n- `*` matches every note\n- `a \u0026 b` matches if both `a` and `b` match\n- `a | b` matches if either `a` or `b` matches\n- `~ a` matches if `a` does not match\n- `#my-tag` matches if note contains #my-tag\n- `foo` matches if note contains the string foo\n- Use brackets (`(a)`) to group expressions\n- Use quotes (`\"%many +words$\"`) to escape search strings and search for special characters\n\n```\nnn view \"*\" # matches everything\nnn view \"#programming \u0026 ~html\" # matches notes with the tag programming without the word html\nnn view \"#programming | #coding\" # matches notes with either the tag programming or the tag coding\nnn view \"(#programming | #coding) \u0026 ~html\" # combine expressions with brackets\n```\n\n### Date filters\n\nIn addition to filtering for tags, you can also filter based on the creation and modification date of a note.\n\n- `\u003e`, `\u003c`, `=` operators for dates\n- `created` and `modified` literal to access the date of a note\n- `YYYY-MM-DD` for day literals\n- `HH-MM-SS` for time literals\n\n```\nnn view \"created = 2023-07-01\" # matches all notes created on 2023-07-01\nnn view \"modified = 2023-07-01\" # matches all notes modified on 2023-07-01\nnn view \"modified \u003e 2023-07-01\" # matches all notes modified after 2023-07-01\nnn view \"modified \u003c 2023-07-01\" # matches all notes modified before 2023-07-01\nnn view \"modified \u003e 2023-05-30 \u0026 modified \u003c 2023-07-01\" # matches all notes modified in June 2023\nnn view \"modified \u003e 2023-07-01 \u0026 #programming\" # matches all notes modified after 2023-07-01 with the tag programming\nnn view \"modified \u003e 10:30:00\" # matches all notes modified after 10:30:00\n```\n\nIn the future, less restrictive date specifications might be possible.\nFor example, you could apply the filter `modified = July` or `created = around 10am`.\n\n## Configuration\n\nYou have two options to specify configurations:\n\n- `config.ini` within the xdg config directory which will be created on the first neonote execution\n- environment variables (`NEONOTE_PATH`, `NEONOTE_EDITOR`, `NEONOTE_EXTENSION`)\n\n### Default note location\n\nPer default, neonote stores notes as `md` (Markdown) text within a `notes.db` database in a folder `neonote` in the XDG data directory (`.local/share/neonote` on Linux).  \n\n### Possible Editors\n\nYou can choose any editor you want by specifying it in the configuration.\nHowever, you need to make sure that the editor blocks until the editing process is finished and that it can open multiple files simultanously.\n\nIf your editor command has a `%`, it will be replaced with the files to edit separated by a ` `.\nIf it does not have a `%`, the files are appended at the end of your command.\n\nHere are some example editor configurations:\n- Vim: `vim` or `vim %`\n- Helix: `helix` or `helix %`\n- Nano: `nano` or `nano %`\n- VSCode: `code --wait` or `code --wait %`\n- VSCodium: `codium --wait` or `code --wait %`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimre1%2Fneonote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimre1%2Fneonote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimre1%2Fneonote/lists"}