commit c87443df4a53f3801a5d12adae9eb0a49681a8dd Author: Alexander Navarro Date: Sun Nov 10 19:13:58 2024 +0000 Add Definitions diff --git a/Definitions.md b/Definitions.md new file mode 100644 index 0000000..59b3945 --- /dev/null +++ b/Definitions.md @@ -0,0 +1,36 @@ +# Project definition and Scope + +## Main idea + +The idea came after the realization that 2 small projects could share a portion of the codebase: + +- A synchronization tool between spotify and youtube music +- A migration tool from readwise to readeck + +The purpose of the library is to abstract the common part of synchronization between different platforms that have it's data in different formats or structures. + +### What is/will be implemented: + +- [ ] Copy of the external data in a local database +- [ ] Interfaces for structure definitions and utilization and consumption for integration in external programs +- [ ] Local reconciliation before performing the actual sync, to review what is going to be done and fix wrong matches and or missing ones +- [ ] Multiple synchronization methods + - [ ] Insert new only + - [ ] Mirror +- [ ] Provide a callback to find equivalent items on the different platforms, the callback should return a list of the matches: + - [ ] 0 matches, no coincidence found + - [ ] 1 match, perfect match, use that + - [ ] >1 matches, partial matches +- [ ] Options to handle equivalences between platforms: + - [ ] Insert missing + - [ ] Manually create new items + - [ ] Select most weighted in a partial match + - [ ] Ignore + +### What won't be implemented + + +### Tech Stack and Misc + +- Use a graph database since we are mostly interested in the relation between items + - TBD which one, but since is intended to be used in small programs, sqlite and postgres should suffice with their recursive CTE statements and go handles them natively \ No newline at end of file