This makes some invalid states unrepresentable, which is something that is desired in this application to reduce mental complexity and to reduce the risk of undesired behaviour of aplying functions like `encrypt` on already encrypted notes. `Note` is now an enum that holds the structs. This approach is similar to the one used in some parts of `std`, though in this case other approaches could be used, but they would be way too much verbose for this use case. This change was done because having functions like `hide` on already hidden functions is not a good idea (even if was they do is "just" cloning the structure...). There are some rough edges, but I'll improve them in another moment.
This is a simple and experimental password-based note-taking app with built-in password-based encryption.
- Improve password checking
- Allow the addition of arbitrary metadata when creating a note
- Add basic settings (export and import notes, change data directory, etc)
- Add basic markdown support (bold, italics, underline)
- Improve performance (duplicate decryption operations, tons of copying/cloning, etc)
This project was done in just a day. Code quality isn't the best. I will slowly improve this project according to my needs, some things like the ones on the To-Do list will probably be done at some point in time.
However, with that being said, if you'd like to contribute or fix something, feel free to create an account and go for it! :)