# ZEPENDENCIES (name TBC)
## User Experience
* User would mark crates that should no longer be used.
* Dependents to said crate would be displayed as some kind of tree.
* User can access information like repository, docs, etc. to each crate.
* User can supply filters on the fly.
* User would mark crates as "done", which would remove them from the tree.
* There would be indicators to display which crate only requires a dependency optionally.
Conditionally (on hover?) display the condition.
* Outdated dependents would (by default) only be displayed if there are dependents to it.
* Collapse chains of crates if they are each the only node (similar to how IntelliJ does it)?
## Usecases:
These are the following actions possible with this tool:
- Retrieval of all crates with filters applied and displayed in a tree form
-
## Design
* any queries are performed as lazily as possible: we don't need to build the entire dependent-tree, the user won't see it all.
### Single vs Multi-User
* single user
- would allow us to use frameworks like tauri
- would be easier to do
* multi user
- would allow collaboration
- application could be hosted online
### Handling Multiple Users
- either the frontend's download is rather large (the entire compressed database dump is 250MiB, though that one contains more than what we need)
- or we perform most processing on the backend side and only send the results back
## Implementation
* we would have a sqlite database (or maybe something else) containing all the relations between crates.
### Concerns
* wait if the rdep tree is fetched each time while the markings and notes remain static couldn't they get outdated?
* Where do we store users' notes and marks?
## Future Scope
* auth if needed for collaboration
* Import "legacy" crates from RUSTSEC
* Smartly handle optional dependencies: if a feature flag is not enabled, conditionally ignore the rdep?