---
# System prepended metadata

title: Forklift (old)

---

# 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?
