skald1: an encrypted journal in Rust
I have completed the rustlings exercises, and I am moving on to a more specific project. I’m going to create an encrypted local file-based journal. In the longer term, to make it a bit more Rust-y and to learn some systems programming, each entry will be timestamped, encrypted and immutable once published.
Keeping with the theme, I will call this small project Skald, after the norse poets.
tools I will use
- Rust for the backend
- first CLI, and then Tauri for the frontend. I want to stay in the Rust ecosystem
- deploy releases on github
I won’t make this as ambitious or clearly structured as my last project, but I want to at least be mindful of the order in which I do things and get a sense of progress. I will use repo issues for this purpose. I won’t spend as much time on project planning or architecture, as I’m primarily doing this to learn how to write Rust.
project plan
Chunk 1: project structure, basic functionality
- diary.rs module
- DiaryEntry struct
- file saving and loading
- CLI interface for adding/viewing entries.
Chunk 2: improve basics
- add timestamps to entries.
- improve file I/O error handling
- make the basic functionality robust
- add JSON serialization/deserialization
Chunk 3: encryption
- TBD
Chunk 4: immutability, hash chaining
- TBD
- I want tamper detection
Chunk 5: frontend GUI
- TBD
- will use Tauri, and perhaps Svelte