Architecture
Spaces
Spaces are virtual folders that can be shared publicly on the internet, or privately with friends, family and teams. Spaces contain Objects which can be hosted by any connected Node, or by Spacedrive as a service.
Spaces can be shared with a unique URL, and can be embedded in websites, blogs and social media. Example: sd.space/username/space.
Objects can be added to a Space manually, or by matching a defined ruleset, similar to Tags. This mechanism is also used for the default Spaces such as favorites, photos, videos, documents and screenshots. Photos, being a Space, means that albums can be nested and contain various Object kinds.
Spaces allow for permissions, which can be set to read-only, read-write, or read-write-delete for the entire Space, or per Object.
When syncing a Space a folder is created somewhere on the user's system to sync the physical contents of the Space. This can be in the data folder of Spacedrive or at a path of the users choice. Metadata is ingested into the library
Viewing a Space online or even opening it in the app will not add it to your Library. You must explicitly click "Add Space to Library" to sync it's contents, to which you can optionally configure the parameters.
It is possible to put Tags and Locations and other strucured data models into a Space, in this case we will create an Object to represent it and handle syncing the Location, Tag or even another Space though a dedicated handler. For example when a foreign Location is loaded into a Space, we will sync the Location with their library, but it will be owned by the Space itself, meaning if the Space is removed so is the Location if it does not belong in the given Library.
Spaces will be AI native, using our custom embedding architecture, we can dynamically embed an associated vector database, pre-generated by Spacedrive tailored specifically to that Space to enable AI features such as chat, deep search and workflows.
In the future, Objects can be organized and presented spatially, with various layouts and variable grid placements. Color themes, icon packs and typography can be customized per Space.