This applications provides an API for object storage, leveraging multiple different storage services and providing features like metadata, thumbnails, encryption, upload sessions and more.
Currently supported features:
- Store different buckets on different storage services, transparently, with the same API
- Store on Amazon S3 and every S3-compliant storage services (GCP, Oracle, IBM, BackBlaze, ...)
- Store on MinIO for self-provisioned storage backend (S3 compliant)
- Store in personal or business OneDrive accounts (1TB provided with Office365 plans)
- Store on local filesystem (for reduced-redundancy, recoverable assets)
- Store in local RAM (intendend for caching)
- Store arbitrary metadata on every asset
- Extract metadata from image and videos
- Generate thumbnails from images
- SHA1, SHA256 and legacy MD5 hash check for upload verifications
- Support partial/ranged and conditional requests with proper ETag management
- Encryption at-rest with AES-256, compatible with partial/ranged requests with AES-256-GCM
- Multipart Upload sessions
- Bucket and object-level ACL
- Support for sharing at object-level
- Direct embed and download link generation
- Immediate consistency on all operations for all storage backends
- Async cleanup jobs
- Comes with Java client for Spring and NodeJS client generators
Incoming features:
- Expose S3 compliant API
This application is generated using LoopBack 4 CLI with the initial project layout.
By default, dependencies were installed when this application was generated.
Whenever dependencies in package.json
are changed, run the following command:
npm install
To only install resolved dependencies in package-lock.json
:
npm ci
npm start
You can also run node .
to skip the build step.
Open http://127.0.0.1:3000 in your browser.
To incrementally build the project:
npm run build
To force a full build by cleaning up cached artifacts:
npm run clean
npm run build
If eslint
and prettier
are enabled for this project, you can use the
following commands to check code style and formatting issues.
npm run lint
To automatically fix such issues:
npm run lint:fix
npm run migrate
: Migrate database schemas for modelsnpm run openapi-spec
: Generate OpenAPI spec into a filenpm run docker:build
: Build a Docker image for this applicationnpm run docker:run
: Run this application inside a Docker container
npm test
Please check out LoopBack 4 documentation to understand how you can continue to add features to this application.