/storage-api

A S3 compatible object storage service that integrates with Postgres and Gotrue

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Supabase Storage Middleware

A scalable, light-weight object storage service.

Read this post on why we decided to build a new object storage service.

  • Uses Postgres as it's datastore for storing metadata
  • Authorization rules are written as Postgres Row Level Security policies
  • Integrates with S3 as the storage backend (with more in the pipeline!)
  • Extremely lightweight and performant

Architecture

Documentation

Development

  1. Copy .env.sample to .env file.
  2. Copy .env.test.sample to .env.test.
  3. Change GLOBAL_S3_BUCKET and REGION to the name and region of a S3 bucket.
    1. If you just want to run the tests and not develop locally, you can skip this step because S3 calls are mocked in our tests.
  4. Set up your AWS credentials. Your user must have permissions to s3:PutObject, s3:GetObject, s3:DeleteObject in the bucket you have chosen.

Your root directory should now have both .env and .env.test files.

  1. Then run the following:
# this sets up a postgres database and postgrest locally via docker
npm run restart:db
# Start the storage server
npm run dev

Testing

To perform your tests you can run the following command: npm test