Project Settings

Configure storage, SMTP, auth, database, and other project settings.

Each project has configurable settings for storage, email, authentication, database, and more. Changes require a project restart.

Accessing Settings

Via Web UI

  1. Click on a project
  2. Go to Settings tab
  3. Select the category
  4. Make changes
  5. Click Save and restart

Via API

# Get all settings
curl https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key"

# Get specific category
curl "https://supascale.example.com/api/v1/projects/my-project/settings?category=smtp" \
  -H "X-API-Key: your-api-key"

Storage Settings

Configure file storage behavior:

SettingDescriptionDefault
File Size LimitMaximum upload size50MB
Image TransformationEnable imgproxyDisabled

Update via API

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "storage",
    "settings": {
      "fileSizeLimit": "100MB"
    }
  }'

SMTP Settings

Configure email delivery for authentication:

SettingDescriptionExample
HostSMTP serversmtp.sendgrid.net
PortSMTP port587
UserSMTP usernameapikey
PasswordSMTP passwordSG.xxx
Sender NameFrom nameMy App
Sender EmailFrom address[email protected]

Example Configurations

SendGrid

{
  "category": "smtp",
  "settings": {
    "host": "smtp.sendgrid.net",
    "port": 587,
    "user": "apikey",
    "password": "your-sendgrid-api-key",
    "senderName": "My Application",
    "senderEmail": "[email protected]"
  }
}

Mailgun

{
  "category": "smtp",
  "settings": {
    "host": "smtp.mailgun.org",
    "port": 587,
    "user": "[email protected]",
    "password": "your-mailgun-password",
    "senderName": "My Application",
    "senderEmail": "[email protected]"
  }
}

Gmail

{
  "category": "smtp",
  "settings": {
    "host": "smtp.gmail.com",
    "port": 587,
    "user": "[email protected]",
    "password": "your-app-password",
    "senderName": "My Application",
    "senderEmail": "[email protected]"
  }
}

For Gmail, use an App Password instead of your regular password.

Auth Settings

Configure authentication behavior:

SettingDescriptionDefault
Site URLRedirect URL after authProject URL
JWT ExpiryToken lifetime (seconds)3600
Disable SignupPrevent new registrationsfalse
Email ConfirmRequire email verificationtrue

Update via API

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "auth",
    "settings": {
      "siteUrl": "https://myapp.com",
      "jwtExpiry": 7200,
      "disableSignup": false,
      "emailConfirmRequired": true
    }
  }'

OAuth Provider Settings

Configure social login providers for your project. For detailed setup instructions, see the OAuth documentation.

Supported Providers

Supascale supports 18 OAuth providers including Google, GitHub, Apple, Microsoft, Discord, and more.

Configuring a Provider

  1. Click on a project
  2. Go to Settings > OAuth Providers
  3. Click the provider you want to enable
  4. Enter your Client ID and Client Secret
  5. Copy the Callback URL to your provider's developer console
  6. Click Save
  7. Restart the project

Example: Enable Google OAuth

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/oauth/google \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "clientId": "your-google-client-id.apps.googleusercontent.com",
    "clientSecret": "your-google-client-secret"
  }'

Viewing Configured Providers

curl https://supascale.example.com/api/v1/projects/my-project/oauth \
  -H "X-API-Key: your-api-key"

Response:

{
  "providers": [
    {
      "name": "google",
      "enabled": true,
      "configured": true
    },
    {
      "name": "github",
      "enabled": false,
      "configured": false
    }
  ]
}

OAuth credentials are encrypted before storage. See Encryption for details.

Connection Pooler Settings

Configure PgBouncer (requires pooler service enabled):

SettingDescriptionDefault
Pool ModeConnection pooling modetransaction
Default Pool SizeConnections per user/db20
Max Client ConnectionsMaximum client connections100

Pool Modes:

  • session - Connection held for entire session
  • transaction - Connection released after transaction
  • statement - Connection released after each statement

Update via API

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "pooler",
    "settings": {
      "poolMode": "transaction",
      "defaultPoolSize": 25,
      "maxClientConnections": 200
    }
  }'

API Settings

Configure REST API behavior:

SettingDescriptionDefault
Max RowsMaximum rows returned1000
DB SchemaExposed schemaspublic

Update via API

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "api",
    "settings": {
      "maxRows": 2000,
      "dbSchema": "public,api"
    }
  }'

Database Settings

Configure PostgreSQL version and external database access.

SettingDescriptionDefault
PostgreSQL VersionDatabase version (15, 16, or 17)15
External AccessAllow direct PostgreSQL connections from outside DockerDisabled

View Database Settings

curl "https://supascale.example.com/api/v1/projects/my-project/settings?category=database" \
  -H "X-API-Key: your-api-key"

Response:

{
  "success": true,
  "data": {
    "externalAccess": false,
    "postgresVersion": "15",
    "port": 5432
  }
}

Enable External PostgreSQL Access

Allow direct connections to PostgreSQL from outside the Docker network:

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "database",
    "settings": {
      "externalAccess": true
    }
  }'

Security Warning: Enabling external access exposes your PostgreSQL port to the network. Ensure your firewall is properly configured and use strong database passwords. Only enable this if you need direct database connections from external tools or services.

Change PostgreSQL Version

Upgrade or downgrade PostgreSQL version:

curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "database",
    "settings": {
      "postgresVersion": "17"
    }
  }'

Changing the PostgreSQL version requires a full project restart. Your data is preserved during the upgrade process.

Applying Changes

After modifying settings:

  1. Click Save Changes (UI) or make API call
  2. Restart the project for changes to take effect
# Via API
curl -X POST https://supascale.example.com/api/v1/projects/my-project/stop \
  -H "X-API-Key: your-api-key"

curl -X POST https://supascale.example.com/api/v1/projects/my-project/start \
  -H "X-API-Key: your-api-key"

Viewing Current Settings

Settings are returned with sensitive values masked:

curl https://supascale.example.com/api/v1/projects/my-project/settings \
  -H "X-API-Key: your-api-key"

Response:

{
  "storage": {
    "fileSizeLimit": "50MB"
  },
  "smtp": {
    "host": "smtp.sendgrid.net",
    "port": 587,
    "user": "apikey",
    "password": "********",
    "senderName": "My App",
    "senderEmail": "[email protected]"
  },
  "auth": {
    "siteUrl": "https://myapp.com",
    "jwtExpiry": 3600
  }
}

Best Practices

  1. Test SMTP before enabling email confirmation
  2. Use environment-specific settings for dev/staging/prod
  3. Document your configuration for team reference
  4. Backup settings before major changes