{"id":25745981,"url":"https://github.com/cyrix126/contact-manager","last_synced_at":"2026-06-07T21:01:53.211Z","repository":{"id":214537640,"uuid":"736757077","full_name":"Cyrix126/contact-manager","owner":"Cyrix126","description":"fast, powerfull, safe, cli contact manager.","archived":false,"fork":false,"pushed_at":"2024-02-22T07:33:08.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-02-22T08:37:17.899Z","etag":null,"topics":["cli","cli-app","command-line-interface","command-line-tool","contacts-app","contacts-manager","rust","terminal-app","vcard","vcard4"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cyrix126.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null}},"created_at":"2023-12-28T19:37:09.000Z","updated_at":"2024-01-19T14:36:12.000Z","dependencies_parsed_at":"2024-01-23T07:28:35.910Z","dependency_job_id":"b15fe5c4-2875-49e3-9f46-e11612415a3f","html_url":"https://github.com/Cyrix126/contact-manager","commit_stats":null,"previous_names":["cyrix126/contact-manager"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyrix126%2Fcontact-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyrix126%2Fcontact-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyrix126%2Fcontact-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyrix126%2Fcontact-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cyrix126","download_url":"https://codeload.github.com/Cyrix126/contact-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240843098,"owners_count":19866706,"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":["cli","cli-app","command-line-interface","command-line-tool","contacts-app","contacts-manager","rust","terminal-app","vcard","vcard4"],"created_at":"2025-02-26T11:29:29.037Z","updated_at":"2025-02-26T11:29:29.490Z","avatar_url":"https://github.com/Cyrix126.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README\n\n\n **WIP !**\n\n## Contact-Manager\n\ncontact-manager (cm for short), is a [fast](../benchs), minimalist, powerfull and correct command line interface contact manager written in rust.\n\nIt also expose his own high-level library for other crates to use.\n\n### Overview\n\ncm is used to manage contacts manually or automaticly with address books. It can be integrated with softwares who need access to contacts, using the library or with the immediate mode binary.\n\ncm is still in devellopement, but is actually useable. You can check the [ROADMAP](ROADMAP.md) to see the direction I intend to take for this sotfware and the [TODO](TODO.md) for more shortly features.\n \n### Features\n\n- [x] fast, power and correct contact-manager\n\nAn inconveniance could be that if you try to use this programm with already existing vcards contact not following the spec, the programm could crash.\n\nIf that's the case, the programm will tell you exacltly which vcard is wrong and why.\n\nUse the **import** function to be sure everything is valid.\n\n#### Immediate Mode\n\n- [x] prevent bad input from user.\n- [x] optional pretty output\n- [x] no input after execution, so very easy to alias or integrate to scripts.\n- [x] use a default book in case no books are specified.\n- [x] args to use easly the public functions of the library.\n- [ ] shell autocompletion generation\n\n#### Public API\n\n- [x] import from file/directory\n- [x] export to file\n- [x] create/delete contact\n- [x] create/delete/rename address book.\n- [x] create/search/delete any property to vcard with any property with any logical operator\n- [x] generate index for other sotfware (such as an email client).\n- [x] filter by book\n- [x] forgiveable search\n- [x] contacts in books as links to save space and trouble.\n\n#### Interactive Mode\n\n- [x] menu for managing contacts and books.\n- [x] presentation of a contacts.\n\n#### TUI\n\n- [ ] interface for managing contacts and books (low priority).\n\n### Usage\n\n\nYou can use this software in multiple ways:\n\n- Alias to make quick commands.\n- Interactive interface, with menus.\n- Immediate Mode, to get all the powerfull options for one time use (if often used, consider making an alias making your life easier).\n- Integrate in sotfware using the included library.\n- Integrate in scripts calling the Immediate Mode binary directly.\n- Generate an index for uses in other sotwares. \n\n\n```cm --help``` \n\nTo get all available commands for immediate and interactive mode.\n\n\n#### Integration for script\n\nIf using the binary in a script, do not use --pretty, as it can have unstable ouput depending on the number of results.\\\nInstead, assume the first line for find-value result is always the uid, followed by the full string of a property. If multiples contacts have been found to have properties matched, a empty line seperate thoses.\n\n### Technical details\n\ncm is using [vcard_parse](https://crates.io/crates/vcard_parser) to make all the parsing and saving of the vcard v4 format file.\nIt manages the contacts in adressbooks with links to never have a contact file more than once on your storage device. So you have the main folder with all your contacts and one folder per addressbook which contains a link for every contacts in this book.\n\ncm will not let you input invalid data (will refuse for use of immediate mode or library, but guide the user in interactive mode).\n\nAll the saved contacts are in vcard format, which would enable you to use this programm whih a cardav syncroniser. (see [vdirsyncer-rs](https://git.sr.ht/~whynothugo/vdirsyncer-rs) for a work on that topic in rust).\n\n\n\n### RFC\n\n[RFC6350 vCard Format Specification](https://datatracker.ietf.org/doc/html/rfc6350) thanks for [vcard_parser](https://github.com/kenianbei/vcard_parser).\n\n[XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/) Thanks to [xdg](https://docs.rs/xdg/latest/xdg/)\n\n### Performance\n\ncm aims and is fast with immediate response from a human perspective. The first reason I began to write this software was because khard was bloated, slow and buggy.\n\n### Security\n\nThis programm does not use any encryption. It does consider that you use it on a environnement controlled by you and not accessible by untrusted parties.\n\n### Privacy\n\nThis programm does not communicate whatsoever to anyone.\n\n### License\n\nThis programm is GPLv3.\n\n### Alternatives\n\nOnly looking to crates published on crates.io\n\nNone of the alternatives have a stable version.\n\n**mates-rs**: is dedicated to contact and their emails for integration for mutt. It does not enable to manage other fields except the tel number. It does not validate the entries.\n\n**vcard_tui**: a tui for modifing a contact, the concept could be used for this programm.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyrix126%2Fcontact-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyrix126%2Fcontact-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyrix126%2Fcontact-manager/lists"}