reloopsh/be-upload

By reloopsh

Updated 3 days ago

File upload & asset management service for Reloop — S3-compatible storage for images and media.

Image
Web servers
0

1.6K

reloopsh/be-upload repository overview

📤 Reloop — Upload Service

The Upload Service handles all file and asset uploads in the Reloop platform. It provides a secure, S3-compatible upload pipeline supporting images and media files with size validation, MIME type enforcement, and organization-scoped storage.

Built on Bun + Elysia, backed by PostgreSQL and S3-compatible object storage.


🚀 Features

  • S3-Compatible Storage — Works with AWS S3, MinIO, and any S3-compatible provider
  • File Validation — Enforces max 10MB file size and allowed MIME types
  • Supported Formats — JPEG, PNG, GIF, WebP, SVG
  • Organization-scoped — Uploads are isolated per org
  • API Key Auth — Secured via x-api-key header
  • OpenAPI Docs — Auto-generated spec at /api/upload/openapi
  • NATS Bus — Event-driven integration via the Reloop message bus

ResourceLink
📚 Documentationreloop.sh/docs/setup/backend/upload
🌐 Production APIapi.reloop.sh/api/upload
📜 OpenAPI Specreloop.sh/api/upload/openapi
🐙 Source Codegithub.com/reloop-labs/reloop
💬 Discorddiscord.gg/reloop
🐦 Twitter / X@reloophq
🆘 Supportreloop.sh/support

⚡ Quick Start

docker pull reloopsh/be-upload:latest

docker run -d \
  -p 8018:8018 \
  -e PG_URL=postgresql://user:password@host:5432/reloop \
  -e REDIS_URL=redis://:password@host:6379 \
  -e NATS_URL=nats://host:4222 \
  -e BASE_URL=https://your-domain.com \
  -e S3_ENDPOINT=https://s3.amazonaws.com \
  -e S3_ACCESS_KEY=your-access-key \
  -e S3_SECRET_KEY=your-secret-key \
  -e S3_BUCKET=reloop-uploads \
  -e S3_REGION=us-east-1 \
  reloopsh/be-upload:latest

The service will be available at http://localhost:8018/api/upload.


🔧 Environment Variables

VariableDefaultDescription
PORT8018Port the server listens on
PG_URLPostgreSQL connection string
REDIS_URLRedis connection string
NATS_URLNATS messaging server URL
BASE_URLPublic base URL of the platform
S3_ENDPOINTS3-compatible storage endpoint
S3_ACCESS_KEYS3 access key
S3_SECRET_KEYS3 secret key
S3_BUCKETreloop-uploadsS3 bucket name
S3_REGIONus-east-1S3 region
S3_FORCE_PATH_STYLEtrueUse path-style URLs (required for MinIO)
NODE_ENVproductionRuntime environment

🛠 Tech Stack

  • Runtime: Bun
  • Framework: Elysia
  • Storage: S3-compatible (AWS S3 / MinIO)
  • Database: PostgreSQL via Drizzle ORM
  • Cache: Redis
  • Messaging: NATS

📦 Part of the Reloop Platform

This image is one of several microservices that make up the Reloop backend. See the full list at hub.docker.com/u/reloopsh.

Tag summary

Content type

Image

Digest

sha256:7e4b6e5e7

Size

283.7 MB

Last updated

3 days ago

docker pull reloopsh/be-upload