Concepts basic key | a basic global identification mechanism. | each entity in the system has a key. | | NOTE: a good key should be uniquely calculable from an entity. item | a basic element in the system. | an item is represented by a URL group (item) | a special item that unifies several items list | a representation of several items tag | a piece of text connected with an item action | a user defined command or script constructed state (tag) | a named state of an item stack (group) | a set of versions or states of an item | a stack behaves like an item collection/list | a special list defined manually or with a search that is maintained in the filesystem tag chain | a special tag that consists of several tags event | a condition that can be bound to an action workflow | a named sequence/graph of states and transitions (actions) structural URL index | contains: metadata item data GID metadata GIDs of available local sub-items (thumbs, previews, ...) GIDs of available remote sub-items (thumbs, previews, ...) URLs (optional) | URLs are only local... store cache cache store clone/remote (???) structure configuration (archive-wide) general settings actions scripts remote refs clone settings index (metadata) item store (URLs) local cache (previews) version info index directory structure .ig/ items/ | item store. | contains refs to original objects. .json | contains refs to original data (remote) ... .pack ... meta/ XXX | metadata and tag store | XXX this is not final... .json ... cache/ | cache configuration and listings / .json | contains specific cache configuration | - query | - generator configuration | - image resolution | - ... | - output dir (default: .ig/cache/) ... .jpg ... .json | contains refs to specific and location. | NOTE: a single item may appear in several caches, hence a | single place to keep the item-specific refs and multiple | cache dirs. ... .pack ... config/ XXX history/ XXX | this directory is dependant on what VCS is used. scripts/ XXX actions/ ... ... events/ XXX / . ... ... / ... requirements index external data (represented by URLs and groups of URLs) indexing is done via tags (metadata) provide generic data operations search/select import copy/move/... ... provide data-specific operations import thumbnails/previews (for images) ... provide archive-level operations clone push/pull commit ... provide trivial configurability data-specific actions domain-specific archive actions stored data | the main idea behind this is to make a git like management system | suited for a slightly different data, characterised as: very large umbers of elements/files continually increasing number of elements elements rarely change (almost no diffing needed) metadata is constantly changed large elements span more than one storage media indirect as well as direct element cloning copy / backup preview thumbnail data is constantly searched or accessed basic requirements safe originals main workflows import new data . | vim:set spell ts=4 sw=4 :