Add Definitions

Alexander Navarro 2024-11-10 19:13:58 +00:00
commit c87443df4a

36
Definitions.md Normal file

@ -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