{"id":33185679,"url":"https://github.com/bdazl/note","last_synced_at":"2026-01-14T20:26:38.080Z","repository":{"id":257948393,"uuid":"867982685","full_name":"bdazl/note","owner":"bdazl","description":"Minimalistic terminal note taking","archived":false,"fork":false,"pushed_at":"2024-11-03T16:55:08.000Z","size":1001,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-22T04:02:49.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/bdazl.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-05T06:51:57.000Z","updated_at":"2025-02-01T19:02:47.000Z","dependencies_parsed_at":"2024-10-26T10:32:38.731Z","dependency_job_id":"f7d67425-55f0-4cff-91b0-2aff20993016","html_url":"https://github.com/bdazl/note","commit_stats":null,"previous_names":["bdazl/note"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/bdazl/note","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdazl%2Fnote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdazl%2Fnote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdazl%2Fnote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdazl%2Fnote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bdazl","download_url":"https://codeload.github.com/bdazl/note/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdazl%2Fnote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2025-11-16T05:00:20.098Z","updated_at":"2026-01-14T20:26:38.057Z","avatar_url":"https://github.com/bdazl.png","language":"Go","funding_links":[],"categories":["\u003ca name=\"note-taking\"\u003e\u003c/a\u003eNote taking"],"sub_categories":[],"readme":"# `note`: Minimalistic Note Taking\n\n`note` is designed to help you to quickly jot down text onto a space, similar to a bulletin\nboard; in your terminal. Notes are stored in a [sqlite](https://www.sqlite.org/) database\nfile and upon creation the note is assigned an *ID*.\n\nIn `note`, all notes are organized into *spaces*. A space is simply a category or label you\nassign to your notes. The space can be any [UTF-8 encoded](https://en.wikipedia.org/wiki/UTF-8)\nstring and the only rule is that a space cannot include the comma character: `,`.\n\nSpace starting with the period, `.`, is considered a *hidden space*. Hidden spaces will not\nbe shown by default, when printing notes or spaces. Removal of a note is a move operation\nto the *.trash* space, if permanent delete is not explicitly specified.\n\nBesides the ID and space, notes contain only a limited set of metadata. Timestamps\nfor when the note was *created*, as well as *last updated*, as well as the *pin* field.\nPinned notes are organized together at the top or bottom, depending on the sort order, when\nprinted in table or list form.\n\nConsider using this program if you vibe with some or all of these `note` features:\n* Note taking in your terminal should be simple and without bloat.\n* All notes are stored in _one database file_, your filesystem will not be cluttered.\n* [The Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) of minimal scope and\ncomposable programs - do one thing well.\n\n\n## Why `note`\n\nThere are a couple of contenders to this program. Most alternatives to `note` store their\nnotes in text files in the filesystem, with various tricks of organization. The most feature\ncomplete alternatives I found either [focuses on files](https://github.com/rhysd/notes-cli)\nor had [too many off-topic features](https://github.com/xwmx/nb) like: git repository\nsynchronization, encryption, image storage and more.\n\nThe goal of `note` is to give you a simple and powerful interface to manage your notes, with\njust enough built in to organize your notes the way you want to, but without the requirement\nof a specific structure. If you want to, you (or your machine) can simply jot down some notes.\n\n\n## Installation\n\nYou can download one of the pre-built binaries from the [releases](https://github.com/bdazl/note/releases) page.\nAt the time of writing, binaries are built for Linux and Windows targets. macOS will be built\nsoon.\n\n### Source\n\nThis program is written in [Go](https://go.dev), which means building (reading and contributing)\nthe source code is simple.\n\nTo install this program you need the following pre-requisites:\n1. [Go](https://go.dev/doc/install)\n2. [GCC](https://gcc.gnu.org/wiki/InstallingGCC)\n3. [go-sqlite3](https://github.com/mattn/go-sqlite3?tab=readme-ov-file#installation)\n\nWhen you have installed Go and GCC, usually with your system package manager, the rest of\nthe installation can be done by running the commands below. `CGO_ENABLED=1` is specified\nbecause go-sqlite3 requires GCC.\n```bash\nCGO_ENABLED=1 go install github.com/mattn/go-sqlite3\ngo install github.com/bdazl/note@latest\n```\n\n\n## Usage\n\n![](https://raw.githubusercontent.com/bdazl/note/refs/heads/main/docs/gifs/init.gif)\n\nBelow is a snippet output from `note help`, that should give you an overview of the available\noperations that can be performed:\n\n| Command    | Description |\n| ---------- | ----------- |\n| init       | Initialize note configuration and database |\n| add        | Add new note |\n| show       | Show content of specific note(s) |\n| find       | Find notes containing a pattern |\n| edit       | Edit content of note |\n| pin        | Pin note(s) to top |\n| unpin      | Unpin note(s) from top |\n| move       | Move note to another space |\n| remove     | Remove note(s) with id(s) |\n| clean      | Empty the .trash space |\n| list       | Lists notes from one or more spaces |\n| table      | Lists available notes in a table format |\n| space      | Lists all or some spaces |\n| id         | Lists all or some IDs |\n| import     | Import notes from JSON or YAML file |\n| export     | Export notes to JSON or YAML file |\n| help       | Help about any command |\n| version    | Version of this program |\n| completion | Generate the autocompletion script for the specified shell |\n\n### Init note\n\nThe first time you use `note` you need to initialize a configuration and a database. This is done by\ncalling the `init` sub-command:\n```bash\nnote init\n```\n\nThis will store a configuration and a database file. The locations of these files can\nbe modified by specifying `-c` and `--db` respectively. These arguments are global to all commands\nand, if specified, will override the config initialized above. The configuration can be a\n[wide array of formats](https://github.com/spf13/viper?tab=readme-ov-file#what-is-viper).\n\nSee the [Configuration section](#configuration) for a discussion on where the files are located,\nif default values are used.\n\n### Add note\n\nThere are three main methods of adding your note. The quickest way is to simply invoke `note` like this:\n```bash\nnote add This is My First Note\nnote add \"This is Another Note\"\n```\n\nYou can write a note with your default `$EDITOR`:\n```bash\nnote add\n```\n\nIf no such editor exist, a default has been chosen for you. It is possible to define the editor in the\nconfiguration file.\n\nA note can also be created by specifying a file that you want `note` to read:\n```bash\nnote add -f some.txt\n```\n`note` can also read from standard input (`-`):\n```bash\necho note made by other program | note add -f -\n```\n\n### Spaces\n\nAll notes belong to a space, which can be any string you define:\n```bash\nnote add -s MySpace This is a Song\n```\n\nBy default, your notes will fall into the `main` space. You can list all spaces occupied with one or\nmore notes, by running:\n```bash\nnote space [id...]\n```\n\nIf you specify one (or more) id:s in the above command, only spaces occupied by the notes you specify will\nbe shown. You can also use the alias `note spc [ids...]` which is equivalent to the previous statement.\n\nTo list IDs occupied by a space, you can use the following command, and similarly to the space command\nabove, if you specify one or more positional arguments - only ID's in those spaces will be shown\n```bash\nnote id [space...]\n```\n\n### Content of notes\n\nTo get an overview of your notes, it's often useful to get a table. This can be done simply with:\n```bash\nnote\n```\n\nIf you want to have control over how many preview words will be shown, use the specific sub-command:\n```bash\nnote table --preview 5 [space...]\n```\n\nTo retrieve the content of specific note(s), invoke `get`:\n```bash\nnote get id [id...]\n```\n\nTo list the full content of your notes, invoke the `list` (or `ls`) command, you can specify any number\nof space(s) as a filter. There are also a number of sorting, limiting and styling options to this command:\n```bash\nnote ls [space...]\n```\n\n### Edit notes\n\nEdit note in `$EDITOR`:\n```bash\nnote edit id\n```\n\nPin/unpin note(s) to the top:\n```bash\nnote pin id [id...]\nnote unpin id [id...]\n```\n\nMove note to space:\n```bash\nnote move space id [id...]\n```\n\n### Import/export\n\nNotes can be exported and imported to [JSON](https://en.wikipedia.org/wiki/JSON) or\n[YAML](https://en.wikipedia.org/wiki/YAML). By default the export is printed to standard output:\n```bash\nnote export [file]\n```\n\n\n## Configuration\n\n`note` uses the excellent libraries [cobra](https://github.com/spf13/cobra) and [viper](https://github.com/spf13/viper)\nto handle command line arguments and the configuration file. This is an example of a configuration file:\n```yaml\ndb: /home/user/.local/share/note/note.db\nspace: main\neditor: vim\ncolor: auto\nstyle: light\n```\n\nWhen using Linux and macOS, the [Freedesktop XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/)\nis used to determine where the configuration and database files are stored, by default. Windows has\nits own set of environment variables and fallback values.If the environment variable is not available\na fallback value will be used.\n\nBelow is a table that tries to illustrate how the different OS default directories are constructed,\nwhere the `Data` directory is the base directory of the database and `Config` is the base directory\nof the configuration file. Default values will then be `Data/note/note.db` and `Config/note/note.yaml`\nrespectively:\n\n| OS | Directory | Environment Variable | Fallback |\n| -- | --------- | -------------------- |--------- |\n| Linux   | Data   | `$XDG_DATA_HOME`    | `~/.local/share` |\n| Linux   | Config | `$XDG_CONFIG_HOME` | `~/.config` |\n| macOS   | Data   | `$XDG_DATA_HOME`   | `~/Library/Application Support` |\n| macOS   | Config | `$XDG_CONFIG_HOME` | `~/Library/Application Support` |\n| Windows | Data   | `%APPDATA%`        | `%USERPROFILE%/AppData/Roaming` |\n| Windows | Config | `%LOCALAPPDATA%`   | `%USERPROFILE%/AppData/Local` |\n\n### Environment variables\nThese environment variables can be used in all operating systems:\n| Environment variable | Description |\n| -------------------- | ----------- |\n| `DB`     | Database file to use |\n| `EDITOR` | Editor program to use |\n\n### Configuration file parameters\n| Parameter  | Description |\n| ---------- | ----------- |\n| db     | Default database file |\n| space  | Place notes in this space, by default |\n| editor | The editor program to open, when creating or editing new notes |\n| color  | Default color option, one of: `auto`, `no` or `never`, `yes` or `always` |\n| style  | Default style option, one of: `minimal`, `light` or `full`  |\n\n### Precedence\nSome parameters can be specified in file, as environment variables and as command line arguments.\nThe precedence for these are in the (reverse) order you just read: if you supply the `DB` environment\nand the `--db` command line parameter, the command line parameter will be used. This means that\nrunning the following command will initialize a database file named `cmd.db`:\n```\nDB=env.db note init --db-only --db cmd.db\n```\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbdazl%2Fnote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbdazl%2Fnote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbdazl%2Fnote/lists"}