{"id":13552830,"url":"https://github.com/ff-notes/ff","last_synced_at":"2025-06-12T02:08:42.584Z","repository":{"id":28135716,"uuid":"115708211","full_name":"ff-notes/ff","owner":"ff-notes","description":"A distributed note taker and task manager.","archived":false,"fork":false,"pushed_at":"2025-05-24T12:52:51.000Z","size":6251,"stargazers_count":196,"open_issues_count":45,"forks_count":18,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-24T13:53:24.914Z","etag":null,"topics":["crdt","gtd","note-taking","notes","task-management","tasks"],"latest_commit_sha":null,"homepage":"https://github.com/ff-notes/ff#readme","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/ff-notes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":"cblp","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-12-29T09:24:15.000Z","updated_at":"2025-05-24T12:52:56.000Z","dependencies_parsed_at":"2024-08-01T12:21:29.178Z","dependency_job_id":"899fa032-1da3-4c8d-9e36-be3708272620","html_url":"https://github.com/ff-notes/ff","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/ff-notes/ff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ff-notes%2Fff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ff-notes%2Fff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ff-notes%2Fff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ff-notes%2Fff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ff-notes","download_url":"https://codeload.github.com/ff-notes/ff/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ff-notes%2Fff/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259382328,"owners_count":22848841,"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":["crdt","gtd","note-taking","notes","task-management","tasks"],"created_at":"2024-08-01T12:02:11.228Z","updated_at":"2025-06-12T02:08:42.562Z","avatar_url":"https://github.com/ff-notes.png","language":"Haskell","readme":"# 𝑓𝑓\n\nA distributed note taker and task manager.\n\n## What's the big deal?\n\n1.  𝑓𝑓 synchronizes via any file sync application, like git, Yandex.Disk,\n    Dropbox, or Google Drive.\n2.  𝑓𝑓 is available offline and synchronizes without conflicts thanks to\n    [CRDT](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type)\n    and [RON](http://replicated.cc).\n\n## Stability\n\nWorks on all my computers and synchronizes between them successfully.\n𝑓𝑓's own issues are tracked in 𝑓𝑓 since the first day of development.\nI also use 𝑓𝑓 for my personal tasks since the first day of development.\nPlease feel free to test it in your environment.\nBut no guarantees.\n\n## Project-based task management\n\n𝑓𝑓 detects if it is run inside a **git** repository and saves notes in it.\nOther VCS will be supported in future.\nFeel free to open a ticket if you want to extend support.\n\n## Install\n\n```\n$ git clone https://github.com/ff-notes/ff.git\n$ cd ff\n$ stack install ff\n```\n\n## Install experimental GUI\n\n### GTK version\n\n#### Prerequisites\n\nFollow https://github.com/haskell-gi/haskell-gi\\#installation.\n\n#### Program\n\nMac OS:\n\n```\n$ export PKG_CONFIG_PATH=\"/usr/local/opt/libffi/lib/pkgconfig\"\n$ stack install ff-gtk\n```\n\nUbuntu:\n\n```\n$ stack install ff-gtk\n```\n\n### Qt version\n\n#### Prerequisites\n\nMac OS:\n\n```\n$ brew install qt\n```\n\nUbuntu:\n\n```\n# apt install qt5-default\n```\n\n#### Program\n\n```\n$ stack install ff-qt\n```\n\n### Completion for commands and options\n\n#### Ubuntu 18.04\n\n```\nff --bash-completion-script `which ff` | sudo tee /etc/bash_completion.d/ff\n```\n\n#### MacOS\n\n```\nff --bash-completion-script `which ff` | sudo tee /usr/local/etc/bash_completion.d/ff\n```\n\n## Usage\n\n### Look what 𝑓𝑓 can do for you\n\n```\n$ ff --help\nUsage: ff [-b|--brief] [--json] [-C|--data-dir DIRECTORY]\n          [(-V|--version) | COMMAND | [-l|--limit ARG]\n            [(-n|--no-tag) | [--tag TAG]... [--without-tag TAG]...]]\n\n  A note taker and task tracker\n\nAvailable options:\n  -b,--brief               List only note titles and ids\n  --json                   Use JSON for input/output\n  -C,--data-dir DIRECTORY  Path to the data dir\n  -V,--version             Current ff-note version\n  -l,--limit ARG           Number of issues\n  -n,--no-tag              Filter items that have no tags\n  --tag TAG                Filter by tag\n  --without-tag TAG        Filter items without tag\n  -h,--help                Show this help text\n\nAvailable commands:\n  add                      add new task or note\n  agenda                   show what you can do right now [default action]\n  config                   show/edit configuration\n  contact                  show contacts\n  delete                   delete a task\n  done                     mark a task done (archive)\n  edit                     edit a task or a note, using command from environment\n                           variable `EDITOR` or program `editor`\n  new                      synonym for `add`\n  postpone                 make a task start later\n  search                   search for notes with the given text\n  show                     show note by id\n  tags                     show tags of all notes\n  sponsors                 show project sponsors\n  track                    track issues from external sources\n  unarchive                restore the note from archive\n  upgrade                  check and upgrade the database to the most recent\n                           format\n  wiki                     show all wiki notes\n```\n\n### Get started\n\n#### Personal\n\nTo save personal notes and tasks somewhere you must configure 𝑓𝑓's data\ndirectory\n\n```\nff config dataDir --help\n```\n\nIf you use Yandex.Disk, you can say just\n\n```\nff config dataDir -y\n```\n\n#### Project-based\n\nTo work with a project's tasks, just run 𝑓𝑓 inside a VCS repository.\n\n```\n$ ls\n.git\n$ ff add ...\n$ ls\n.ff .git\n$ git add .ff\n```\n\n### Get some unfinished tasks\n\n```\n$ ff\nActual:\n  * buy milk\n    id 458a1456lrc-12z3opnykw, start 2018-01-10\n```\n\n### Add new task or note\n\n```\n$ ff add 'learn Haskell'\n```\n\nNow you can find it in your agenda:\n\n```\n$ ff\nActual:\n  * buy milk\n    id 458a1456lrc-12z3opnykw, start 2018-01-10\n  * learn Haskell\n    id 459h2tqxutq-24nuhr86ae, start 2018-01-14\n```\n\n### Mark task done\n\nMarking done is actually moving to archive.\n\n```\n$ ff done 458a1456lrc-12z3opnykw\narchived:\n  buy milk\n  id 458a1456lrc-12z3opnykw, start 2018-01-10\n```\n\nArchived tasks don't appear in an agenda:\n\n```\n$ ff\nActual:\n  * learn Haskell\n    id 459h2tqxutq-24nuhr86ae, start 2018-01-14\n```\n\n## Developers community\n\nWe have a telegram chat [ff-dev](https://t.me/ff_dev) where you can ask your questions.\n","funding_links":["https://patreon.com/cblp"],"categories":["Haskell","others","Implementations"],"sub_categories":["Productivity"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fff-notes%2Fff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fff-notes%2Fff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fff-notes%2Fff/lists"}