https://github.com/c8121/asset-storage
Basically a DAM-System (Digital Asset Management). Includes a Webserver providing a SPA (Single Page Application) to browse the storage content.
https://github.com/c8121/asset-storage
dam golang spa vuejs
Last synced: 3 months ago
JSON representation
Basically a DAM-System (Digital Asset Management). Includes a Webserver providing a SPA (Single Page Application) to browse the storage content.
- Host: GitHub
- URL: https://github.com/c8121/asset-storage
- Owner: c8121
- License: gpl-3.0
- Created: 2025-09-21T10:21:59.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-10-04T10:31:05.000Z (10 months ago)
- Last Synced: 2025-10-04T12:09:26.407Z (10 months ago)
- Topics: dam, golang, spa, vuejs
- Language: JavaScript
- Homepage:
- Size: 1010 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# asset-storage
Basically a DAM-System (Digital Asset Management). Includes a Webserver providing a SPA (Single Page Application)
to browse the storage content.
> [!NOTE]
> Work in progress, things might change and be not downward compatible
## Goals
**DAM**: Manage Pictures, Documents...
**Portable**: Runs on Linux, Windows, Mac. No installation required, just copy. Can be copied to a external HD or Stick
which then can be used to store assets from different devices.
**Server included**: Can be used on a NAS for example.
**Deduplication**: Same file is stored automatically only once, no matter how often it was added.
**Resilience**: Files are stored in directories, one per time period, to enable quick backups even on large storages. Meta-Data stored separately in JSON-Format. Database can be recreated from Meta-Data and vice versa.
## Features
Store files into an archive directory
- Deduplicated (same file only once, determined by content-hash).
- Organized in subdirectories, one per time period. Old directories will no be touched again to enable incremental backups.
- Meta-data is stored separately and updated when new files are added or existing files with different origin/owner.
- A database is created to be able to find/browse data.
- HTTP-Server included for Web&REST-Service.
- SFTP/SCP/RSYNC-Server included to receive files from remote devices.
## Apps
### add
To add new files to the archive
add [-skip-meta] [-check-hash] [-gzip] [-maxmem ] [-base ] [-name ] [-r]
### spa-server
A HTTP Server which provides a Single-Page-Application to browse the storage
> [!NOTE]
> This is work in progress, important features like TLS is missing at the moment
spa-server [-gzip] [-xor ] [-base ] [-spa ] [-listen ]
### rest-server
A HTTP Server which provides a REST-API to access the storage. This server is included in `spa-server`.
> [!NOTE]
> This is work in progress, important features like TLS is missing at the moment
rest-server [-gzip] [-xor ] [-base ] [-listen ]
### metadata-db-create
Update meta-data-database by reading all meta-data files and writing contents to database.
Not required if database is intact, because `add` also updates the database.
metadata-db-create [-base ]
### ssh-server
Accept files from remote computers via SFTP, SCP or RSYNC
*Note: This is work in progress, important features at the moment*
ssh-server [-host-key ] [-listen ]
### user-edit
Add users, set/update passwords. These users will have access to Servers (Web, SFTP, SCP, RSYNC)
user-edit [-a] -u username
Use `-a` flag to add a new user.
## App Commandline args
Commonly used commandline arguments for asset-storage apps:
| Parameter | Description |
|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| base **Important:** Cannot be mixed, use always or never for one storage. |
| maxmem **Important:** Cannot be mixed, use always with same key or never for one storage.
**Important:** Use same key for all apps with same storage directory |
| listen