# Todo This section contains long-term todos. Some kind of roadmap, of one wants to put it that way. ## Modules Modules imag should offer which are not yet started or in progress, including a short note what each module should do. First the modules which have been implemented in some way (not necessarily perfect or feature-complete): - [x] imag-bookmark - A bookmark manager for web browsing. - [x] imag-diary - A diary, or multiple. - [x] imag-counter - Counting things. - [x] imag-link - Linking imag entries to eachother - [x] imag-notes - Note taking - [x] imag-ref - Refering to files outside the imag store. - [x] imag-tag - Tagging imag entries - [x] imag-view - Viewing imag entries Now the modules that are not yet started: - [ ] imag-bibliography - For handling bibliographic references when writing scientific papers. Like Citavi, for example. - [ ] imag-borrow - If you lend something to someone. - [ ] imag-calendar - Calendar tooling based on icalendar files. No sync functionality. - [ ] imag-category - For categorizing imag entries. Categories must exist before an entry can have a category. - [ ] imag-contact - Contact tooling based on vcard files. No sync functionality. - [ ] imag-cuecards - Cuecards for learning things, for example vocabulary. - [ ] imag-filter - command to read the store from stdin, filter out entries based on a predicate specified via the CLI and write the store back to stdout. - [ ] imag-git - wrapper to call git commands on the imag store no matter whether the current working directory is the store or not - [ ] imag-gps - Adding GPS coordinates to entries - [ ] imag-habit - Tracking ones habits (create habits and make sure you do what you've planned) - [ ] imag-image - Image referencing, categorizing, etc. - [ ] imag-item - Creating entries for Items in the store - [ ] imag-ledger - Ledger functionality like beancountcand others - [ ] imag-list - Managing lists - [ ] imag-mail - Mail handling tool, a CLI-mutt like tool. - [ ] imag-movie - Movie database handling, categorization and such things - [ ] imag-music - Music database handling, categorization and such things. Possibly a scrobble server. - [ ] imag-news - A RSS Reader - [ ] imag-project - A project planner, integrated with imag-timetrack and imag-todo - [ ] imag-rate - Attaching a rating to an entry - [ ] imag-read - Command to load the store and pipe it to stdout (usefull for piping/ chaining commands) - [ ] imag-receipt - Creating, categorizing, managing receipts - [ ] imag-shoppinglists - Managing shopping lists - [ ] imag-store - Low Level CLI Store interface - [ ] imag-summary - Meta-command to call a set of imag commands (configurable which) and displaying their outputs - [ ] imag-timetrack - Tracking time like with timewarrior - [ ] imag-todo - Tracking tasks like with taskwarrior - [ ] imag-url - Extracting URLs from enties, saving URLs to the imag store - [ ] imag-weather - Weather tooling for getting forecast and recording a history of weather - [ ] imag-weight - Weight tracker - [ ] imag-wiki - A wiki for personal use - [ ] imag-workout - Tools for tracking workouts. One sub-module will be step-counter tracking - [ ] imag-write - Command to read the store from stdin and write it to the filesystem store (usefull for piping/chaining commands) ## Libraries - [x] Rewrite libimagerror to be based on `chain-error` crate. This basically removes our error infrastructure, though existing traits and convenience functionality should be kept (for example the `MapErrInto` or the `IntoError` traits), as much as possible). If the switch to `chain-error` would require too much code to be rewritten, reconsider. - [ ] Ensure all libraries are implemented as extension traits rather than wrapping store types - [ ] Rewrite logger to allow config/env-var based module white/blacklisting and writing log to file ## User Interface - [ ] Ensure store ids are always passed as positional arguments ## Project structure and development - [ ] Move away from github - [ ] Have own issue tracking (possibly git-dit) - [ ] Find a solution to having no travis-ci via github anymore - [ ] Setup a viewer for the mailinglist archive - [ ] Add maintainer scripts to repository - [ ] To check patches for Signed-off-by lines - [ ] To automatically craft a reply to a contributor about a missing signed-off-by line - [ ] To automatically craft a reply to a contributor about a patchset that cannot be applied - [ ] To check pull requests for GPG signatures - [ ] To apply a patchset in a new branch