/ README.org
README.org
 1  #+TITLE: Diff of Services
 2  
 3  Diff of Services allows you to keep track of the changes to the Terms of Services, Privacy Policies, and other legal documents you may be subjected to reading throughout your time.
 4  At this point in time, I cannot guarantee stability in the database format. At some time later I shall have migrations but not currently, so please don't use this as future changes /WILL/ require re-making the database and re-adding the documents.
 5  
 6  * Reason
 7  I dislike how long Terms of Services tend to be, but I deem it necessary for me to read them in their entirety. Unfortunately, the companies have a tendency to randomly change things, which becomes prohibitively expensive to re-read it each time there is a change, as it can often be minor. Thus I am creating this utility so that one can keep track of the changes and merely look over a diff of the changes between document version, to make it more feasible to read every version of the terms of service to which one agrees.
 8  
 9  * Structure
10  This project will consist of a few crates (so yes in Rust) which will be developed in (approximately) the following order: a core api for managing things, a CLI to query or add documents, a Ratatui TUI to make easier viewing, a cross-platform Dioxus GUI, and finally a self-hostable server so one can sync between their various devices.
11  
12  * Roadmap
13  Starting with CLI access until specified otherwise
14  
15  - [X] Nix package for CLI
16  - [X] Create document
17  - [X] Be able to add new revisions to the document
18    - [X] Keep track of date added and last date checked separately?
19    - [X] Be able to move between revisions
20    - [X] Ignore adding a revision if unchanged, instead updated last checked field
21  - [X] Generic diff
22  - [ ] Initial TUI work
23    - [ ] Nix package for TUI
24    - [ ] View documents, move between revision
25    - [ ] Inline diff
26    - [ ] Add documents (drag-and-drop vs copy-paste?)
27  - [ ] Initial GUI work (unless we just roll in with trolley and do a TUI-GUI)
28    - [ ] Nix package for GUI
29    - [ ] View documents, move between revisions
30    - [ ] Inline diff
31    - [ ] Add documents
32  
33  At this point, this is the basic functionality for a single-device setup. We have a few options of directions to go after this
34  - [ ] Improved diffing
35    - [ ] Paragraph added/removed diff
36    - [ ] 2-way diff
37    - [ ] Paragraph movement in diffs
38    - [ ] If paragraph add-remove combo, do a sub-paragraph diff (word-by word, myers diff type idea)
39  - [ ] Nix module instead of just package
40  - [ ] Self-hosted sync server
41    - [ ] Nix package and module (nixos vs hm?) for server
42    - [ ] Central storage, client support remote connection
43    - [ ] Clients keep local copy of latest revision of all (or maybe allow selection) docs + changes since last sync
44    - [ ] Docker image
45  - [ ] Extract from HTML document
46    - [ ] Check for update
47    - [ ] Once server implemented, also support autoupdate
48  - [ ] If we're feeling ambitions, maybe even browser extension
49    - [ ] On login / signup prompts (i.e. where "by click you agree to ... ") show if the stored revision is different that the linked one
50    - [ ] One click add to document store (with HTML extraction)
51  
52  * License
53  This project is licensed under the MIT license. You can do what you want with the code, just please attribute the original code to me.