config

package
v2.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TemplateExt stores the extension used for the template files
	TemplateExt = ".gohtml"

	// StaticDir stores the directory served as static assets for the example app.
	StaticDir = "static"

	// StaticPrefix stores the URL prefix used when serving static files
	StaticPrefix = "files"
)
View Source
const (
	// EnvLocal represents the local environment
	EnvLocal environment = "local"

	// EnvTest represents the test environment
	EnvTest environment = "test"

	// EnvDevelop represents the development environment
	EnvDevelop environment = "dev"

	// EnvStaging represents the staging environment
	EnvStaging environment = "staging"

	// EnvQA represents the qa environment
	EnvQA environment = "qa"

	// EnvProduction represents the production environment
	EnvProduction environment = "prod"

	// DBModeEmbedded represents an embedded DB being used as a storage backend
	DBModeEmbedded dbmode = "embedded"

	// DBModeStandalone represents a standalone DB as being used as a storage backend
	DBModeStandalone dbmode = "standalone"

	// RuntimeProfileServerDB is the default profile using an external DB server.
	RuntimeProfileServerDB runtimeprofile = "server-db"

	// RuntimeProfileSingleNode is the profile targeting single-node embedding.
	RuntimeProfileSingleNode runtimeprofile = "single-node"

	// RuntimeProfileDistributed is the profile targeting distributed processes.
	RuntimeProfileDistributed runtimeprofile = "distributed"

	// DBDriverPostgres uses an external Postgres server.
	DBDriverPostgres dbdriver = "postgres"

	// DBDriverSQLite uses an embedded SQLite database.
	DBDriverSQLite dbdriver = "sqlite"

	// StorageDriverLocal uses the local filesystem via Afero.
	StorageDriverLocal storagedriver = "local"

	// StorageDriverMinIO uses MinIO/S3 compatible storage.
	StorageDriverMinIO storagedriver = "minio"

	// UIProviderFranken is the default GoShip UI provider.
	UIProviderFranken uiprovider = "franken"

	// UIProviderDaisy selects the Daisy UI provider.
	UIProviderDaisy uiprovider = "daisy"

	// UIProviderBare selects the minimal bare UI provider.
	UIProviderBare uiprovider = "bare"
)
View Source
const (
	// DefaultSchemaMigrationsTable is the canonical migration tracking table for core SQL migrations.
	DefaultSchemaMigrationsTable = "goship_schema_migrations"
	// MigrationPortabilitySQLCoreV1 is the first portability profile for SQLite-first promotion.
	MigrationPortabilitySQLCoreV1 = "sql-core-v1"
	// PromotionPathSQLiteToPostgresManualV1 identifies the first supported promotion workflow.
	PromotionPathSQLiteToPostgresManualV1 = "sqlite-to-postgres-manual-v1"
	// ManagedKeyRegistryVersion is the versioned contract identifier for managed-key metadata.
	ManagedKeyRegistryVersion = "managed-key-registry-v1"
	// ManagedKeySchemaVersion is the schema version for the managed-key registry payload.
	ManagedKeySchemaVersion = "managed-key-schema-v1"
)

Variables

This section is empty.

Functions

func SwitchEnvironment

func SwitchEnvironment(env environment)

SwitchEnvironment sets the environment variable used to dictate which environment the application is currently running in. This must be called prior to loading the configuration in order for it to take effect.

Types

type AIAnthropicConfig

type AIAnthropicConfig struct {
	APIKey       string `env:"ANTHROPIC_API_KEY"`
	DefaultModel string `env:"ANTHROPIC_DEFAULT_MODEL" env-default:"claude-haiku-4-5-20251001"`
}

type AIConfig

type AIConfig struct {
	Driver     string `env:"AI_DRIVER" env-default:"anthropic"`
	Anthropic  AIAnthropicConfig
	OpenAI     AIOpenAIConfig
	OpenRouter AIOpenRouterConfig
}

type AIOpenAIConfig

type AIOpenAIConfig struct {
	APIKey       string `env:"OPENAI_API_KEY"`
	DefaultModel string `env:"OPENAI_DEFAULT_MODEL" env-default:"gpt-4o-mini"`
}

type AIOpenRouterConfig

type AIOpenRouterConfig struct {
	APIKey       string `env:"OPENROUTER_API_KEY"`
	DefaultModel string `env:"OPENROUTER_DEFAULT_MODEL" env-default:"anthropic/claude-haiku-4-5-20251001"`
	SiteURL      string `env:"OPENROUTER_SITE_URL"`
	SiteName     string `env:"OPENROUTER_SITE_NAME"`
}

type AdaptersConfig

type AdaptersConfig struct {
	DB     string `env:"PAGODA_ADAPTERS_DB"`
	Cache  string `env:"PAGODA_ADAPTERS_CACHE,PAGODA_CACHE_DRIVER"`
	Jobs   string `env:"PAGODA_ADAPTERS_JOBS,PAGODA_JOBS_DRIVER"`
	PubSub string `env:"PAGODA_ADAPTERS_PUBSUB"`
}

type AppConfig

type AppConfig struct {
	Name                             app           `env:"PAGODA_APP_NAME"`
	SupportEmail                     string        `env:"PAGODA_APP_SUPPORTEMAIL"`
	Environment                      environment   `env:"PAGODA_APP_ENVIRONMENT"`
	EncryptionKey                    string        `env:"PAGODA_APP_ENCRYPTIONKEY"`
	Timeout                          time.Duration `env:"PAGODA_APP_TIMEOUT"`
	PasswordToken                    PasswordTokenConfig
	EmailVerificationTokenExpiration time.Duration `env:"PAGODA_APP_EMAILVERIFICATIONTOKENEXPIRATION"`
	OperationalConstants             OperationalConstants
	PageSize                         int    `env:"PAGODA_APP_PAGESIZE"`
	VapidPublicKey                   string `env:"PAGODA_APP_VAPIDPUBLICKEY"`
	VapidPrivateKey                  string `env:"PAGODA_APP_VAPIDPRIVATEKEY"`
	SentryDsn                        string `env:"PAGODA_APP_SENTRYDSN,SENTRY_DSN"`
	TestSentryUrl                    string `env:"PAGODA_APP_TESTSENTRYURL"`
	PublicStripeKey                  string `env:"PAGODA_APP_PUBLICSTRIPEKEY"`
	PrivateStripeKey                 string `env:"PAGODA_APP_PRIVATESTRIPEKEY"`
	StripeWebhookSecret              string `env:"PAGODA_APP_STRIPEWEBHOOKSECRET"`
	StripeWebhookPath                string `env:"PAGODA_APP_STRIPEWEBHOOKPATH"`
	AppEncryptionKey                 string `env:"PAGODA_APP_APPENCRYPTIONKEY"`
	FirebaseBase64AccessKeys         string `env:"PAGODA_APP_FIREBASEBASE64ACCESSKEYS"`
	FirebaseJSONAccessKeys           []byte
}

AppConfig stores application configuration

type BackupConfig

type BackupConfig struct {
	Driver        string `env:"PAGODA_BACKUP_DRIVER" env-default:"sqlite-file"`
	SchemaVersion string `env:"PAGODA_BACKUP_SCHEMA_VERSION" env-default:"v1"`
	SQLitePath    string `env:"PAGODA_BACKUP_SQLITE_PATH"`
	S3            BackupS3Config
}

type BackupS3Config

type BackupS3Config struct {
	Enabled   bool   `env:"PAGODA_BACKUP_S3_ENABLED"`
	Endpoint  string `env:"PAGODA_BACKUP_S3_ENDPOINT"`
	Region    string `env:"PAGODA_BACKUP_S3_REGION"`
	Bucket    string `env:"PAGODA_BACKUP_S3_BUCKET"`
	Prefix    string `env:"PAGODA_BACKUP_S3_PREFIX"`
	AccessKey string `env:"PAGODA_BACKUP_S3_ACCESSKEY"`
	SecretKey string `env:"PAGODA_BACKUP_S3_SECRETKEY"`
	UseSSL    bool   `env:"PAGODA_BACKUP_S3_USESSL" env-default:"true"`
}

type CacheConfig

type CacheConfig struct {
	Hostname     string                `env:"PAGODA_CACHE_HOSTNAME"`
	Port         uint16                `env:"PAGODA_CACHE_PORT"`
	Password     string                `env:"PAGODA_CACHE_PASSWORD"`
	Database     int                   `env:"PAGODA_CACHE_DATABASE"`
	TestDatabase int                   `env:"PAGODA_CACHE_TESTDATABASE"`
	Expiration   CacheExpirationConfig `env:"-"`
}

CacheConfig stores the cache configuration

type CacheExpirationConfig

type CacheExpirationConfig struct {
	StaticFile time.Duration `env:"PAGODA_CACHE_EXPIRATIONSTATICFILE,PAGODA_CACHE_EXPIRATION_STATICFILE"`
	Page       time.Duration `env:"PAGODA_CACHE_EXPIRATIONPAGE,PAGODA_CACHE_EXPIRATION_PAGE"`
}

type Config

type Config struct {
	HTTP        HTTPConfig
	App         AppConfig
	Log         LogConfig
	Security    SecurityConfig
	Runtime     RuntimeConfig
	Managed     ManagedConfig
	UI          UIConfig
	Processes   ProcessesConfig
	Adapters    AdaptersConfig
	Metrics     MetricsConfig
	I18n        I18nConfig
	Cache       CacheConfig
	Database    DatabaseConfig
	Mail        MailConfig
	Phone       PhoneConfig
	Recommender RecommenderConfig
	Storage     StorageConfig
	Backup      BackupConfig
	OAuth       OAuthConfig
	AI          AIConfig
}

Config stores complete configuration

func GetConfig

func GetConfig() (Config, error)

func (Config) ManagedSettingStatuses

func (c Config) ManagedSettingStatuses() []ManagedSettingStatus

ManagedSettingStatuses returns the allowlisted managed settings with explicit access state.

func (Config) RuntimeMetadata

func (c Config) RuntimeMetadata() RuntimeMetadata

RuntimeMetadata builds a runtime metadata snapshot using normalized configuration values.

type DatabaseConfig

type DatabaseConfig struct {
	Driver                 dbdriver `env:"PAGODA_DATABASE_DRIVER,PAGODA_DB_DRIVER"`
	Path                   string   `env:"PAGODA_DATABASE_PATH,PAGODA_DB_PATH"`
	DbMode                 dbmode   `env:"PAGODA_DATABASE_DBMODE"`
	EmbeddedDriver         string   `env:"PAGODA_DATABASE_EMBEDDEDDRIVER"`
	EmbeddedConnection     string   `env:"PAGODA_DATABASE_EMBEDDEDCONNECTION"`
	EmbeddedTestConnection string   `env:"PAGODA_DATABASE_EMBEDDEDTESTCONNECTION"`
	Hostname               string   `env:"PAGODA_DATABASE_HOSTNAME"`
	Port                   uint16   `env:"PAGODA_DATABASE_PORT"`
	User                   string   `env:"PAGODA_DATABASE_USER"`
	Password               string   `env:"PAGODA_DATABASE_PASSWORD"`
	DatabaseNameLocal      string   `env:"PAGODA_DATABASE_DATABASENAMELOCAL"`
	DatabaseNameProd       string   `env:"PAGODA_DATABASE_DATABASENAMEPROD"`
	TestDatabase           string   `env:"PAGODA_DATABASE_TESTDATABASE"`
	SslCertPath            string   `env:"PAGODA_DATABASE_SSLCERTPATH"`
	SslMode                string   `env:"PAGODA_DATABASE_SSLMODE"`
}

DatabaseConfig stores the database configuration

func (DatabaseConfig) RuntimeMetadata

func (d DatabaseConfig) RuntimeMetadata() DatabaseRuntimeMetadata

RuntimeMetadata returns normalized metadata for DB mode, migration compatibility, and promotion path.

type DatabaseRuntimeMetadata

type DatabaseRuntimeMetadata struct {
	Mode                   string   `json:"mode"`
	Driver                 string   `json:"driver"`
	MigrationTrackingTable string   `json:"migration_tracking_table"`
	MigrationDialect       string   `json:"migration_dialect"`
	MigrationPortability   string   `json:"migration_portability"`
	CompatibleTargets      []string `json:"compatible_targets"`
	PromotionPath          string   `json:"promotion_path,omitempty"`
}

DatabaseRuntimeMetadata reports DB mode/driver and promotion compatibility details.

type EnvVar

type EnvVar struct {
	Name     string   `json:"name"`
	Aliases  []string `json:"aliases,omitempty"`
	Type     string   `json:"type"`
	Required bool     `json:"required"`
	Default  string   `json:"default,omitempty"`
}

func EnvVars

func EnvVars() ([]EnvVar, error)

func MissingRequiredEnv

func MissingRequiredEnv(start string) ([]EnvVar, error)

type HTTPConfig

type HTTPConfig struct {
	Hostname     string        `env:"PAGODA_HTTP_HOSTNAME"`
	Port         uint16        `env:"PAGODA_HTTP_PORT"`
	Domain       string        `env:"PAGODA_HTTP_DOMAIN"`
	ReadTimeout  time.Duration `env:"PAGODA_HTTP_READTIMEOUT"`
	WriteTimeout time.Duration `env:"PAGODA_HTTP_WRITETIMEOUT"`
	IdleTimeout  time.Duration `env:"PAGODA_HTTP_IDLETIMEOUT"`
	SseKeepAlive time.Duration `env:"PAGODA_HTTP_SSEKEEPALIVE"`
	TLS          TLSConfig
}

HTTPConfig stores HTTP configuration

type I18nConfig

type I18nConfig struct {
	Enabled         bool   `env:"PAGODA_I18N_ENABLED" env-default:"true"`
	DefaultLanguage string `env:"PAGODA_I18N_DEFAULT_LANGUAGE" env-default:"en"`
	StrictMode      string `env:"PAGODA_I18N_STRICT_MODE" env-default:"off"`
}

type LogConfig

type LogConfig struct {
	Level  string `env:"PAGODA_LOG_LEVEL" env-default:"info"`
	Format string `env:"PAGODA_LOG_FORMAT" env-default:"text"`
}

type MailConfig

type MailConfig struct {
	Driver      string `env:"PAGODA_MAIL_DRIVER,MAIL_DRIVER" env-default:"log"`
	FromName    string `env:"PAGODA_MAIL_FROM_NAME,MAIL_FROM_NAME" env-default:"GoShip App"`
	FromAddress string `env:"PAGODA_MAIL_FROMADDRESS,MAIL_FROM_ADDRESS"`
	Hostname    string `env:"PAGODA_MAIL_HOSTNAME,MAIL_HOSTNAME"`
	HttpPort    uint16 `env:"PAGODA_MAIL_HTTPPORT,MAIL_HTTPPORT"`
	SmtpPort    uint16 `env:"PAGODA_MAIL_SMTPPORT,MAIL_SMTP_PORT"`
	User        string `env:"PAGODA_MAIL_USER,MAIL_USER"`
	Password    string `env:"PAGODA_MAIL_PASSWORD,MAIL_PASSWORD"`
	SMTP        struct {
		Host string `env:"PAGODA_MAIL_SMTP_HOST,MAIL_SMTP_HOST"`
		Port int    `env:"PAGODA_MAIL_SMTP_PORT,MAIL_SMTP_PORT" env-default:"587"`
		User string `env:"PAGODA_MAIL_SMTP_USER,MAIL_SMTP_USER"`
		Pass string `env:"PAGODA_MAIL_SMTP_PASS,MAIL_SMTP_PASS"`
		TLS  bool   `env:"PAGODA_MAIL_SMTP_TLS,MAIL_SMTP_TLS" env-default:"true"`
	}
	Resend struct {
		APIKey string `env:"PAGODA_MAIL_RESEND_API_KEY,MAIL_RESEND_API_KEY"`
	}
	ResendAPIKey string `env:"PAGODA_MAIL_RESENDAPIKEY,MAIL_RESENDAPIKEY"`
}

MailConfig stores the mail configuration

type ManagedConfig

type ManagedConfig struct {
	Enabled              bool                 `env:"PAGODA_MANAGED_MODE"`
	Authority            string               `env:"PAGODA_MANAGED_AUTHORITY"`
	OverridesJSON        string               `env:"PAGODA_MANAGED_OVERRIDES"`
	HooksSecret          string               `env:"PAGODA_MANAGED_HOOKS_SECRET"`
	HooksPreviousSecret  string               `env:"PAGODA_MANAGED_HOOKS_PREVIOUS_SECRET"`
	HooksMaxSkewSeconds  int                  `env:"PAGODA_MANAGED_HOOKS_MAX_SKEW_SECONDS" env-default:"300"`
	HooksNonceTTLSeconds int                  `env:"PAGODA_MANAGED_HOOKS_NONCE_TTL_SECONDS" env-default:"300"`
	RuntimeReport        runtimeconfig.Report `env:"-"`
}

type ManagedKeyMetadata

type ManagedKeyMetadata struct {
	Value          string `json:"value"`
	Source         string `json:"source"`
	RollbackTarget string `json:"rollback_target,omitempty"`
}

ManagedKeyMetadata reports the effective value and source for one managed key.

type ManagedRuntimeMetadata

type ManagedRuntimeMetadata struct {
	Mode            string                        `json:"mode"`
	Authority       string                        `json:"authority,omitempty"`
	RegistryVersion string                        `json:"registry_version"`
	SchemaVersion   string                        `json:"schema_version"`
	Keys            map[string]ManagedKeyMetadata `json:"keys"`
}

ManagedRuntimeMetadata reports effective managed keys and their source layers.

type ManagedSettingStatus

type ManagedSettingStatus struct {
	Key            string               `json:"key"`
	Label          string               `json:"label"`
	Value          string               `json:"value"`
	Source         runtimeconfig.Source `json:"source"`
	Access         SettingAccess        `json:"access"`
	Drift          bool                 `json:"drift,omitempty"`
	RollbackTarget string               `json:"rollback_target,omitempty"`
}

ManagedSettingStatus reports effective state for one managed-capable setting key.

type MetricsConfig

type MetricsConfig struct {
	Enabled  bool   `env:"PAGODA_METRICS_ENABLED" env-default:"true"`
	Path     string `env:"PAGODA_METRICS_PATH" env-default:"/metrics"`
	Exporter string `env:"PAGODA_METRICS_EXPORTER" env-default:"prometheus"`
	Format   string `env:"PAGODA_METRICS_FORMAT" env-default:"prometheus-text"`
}

type OAuthConfig

type OAuthConfig struct {
	GitHub  OAuthGitHubConfig
	Google  OAuthGoogleConfig
	Discord OAuthDiscordConfig
}

type OAuthDiscordConfig

type OAuthDiscordConfig struct {
	ClientID     string `env:"OAUTH_DISCORD_CLIENT_ID"`
	ClientSecret string `env:"OAUTH_DISCORD_CLIENT_SECRET"`
}

type OAuthGitHubConfig

type OAuthGitHubConfig struct {
	ClientID     string `env:"OAUTH_GITHUB_CLIENT_ID"`
	ClientSecret string `env:"OAUTH_GITHUB_CLIENT_SECRET"`
}

type OAuthGoogleConfig

type OAuthGoogleConfig struct {
	ClientID     string `env:"OAUTH_GOOGLE_CLIENT_ID"`
	ClientSecret string `env:"OAUTH_GOOGLE_CLIENT_SECRET"`
}

type OperationalConstants

type OperationalConstants struct {
	NewsletterSignupEnabled                           bool          `env:"PAGODA_APP_OPERATIONALCONSTANTS_NEWSLETTERSIGNUPENABLED,PAGODA_APP_OPERATIONALCONSTANTS_NEWSLETTER_SIGNUP_ENABLED"`
	UserSignupEnabled                                 bool          `env:"PAGODA_APP_OPERATIONALCONSTANTS_USERSIGNUPENABLED,PAGODA_APP_OPERATIONALCONSTANTS_USERSIGNUPENABLED"`
	UserSignupEnabledOnLandingPage                    bool          `env:"PAGODA_APP_OPERATIONALCONSTANTS_USERSIGNUPENABLEDONLANDINGPAGE"`
	QuestionInteractionValidLifetimeInDays            int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_QUESTIONINTERACTIONVALIDLIFETIMEINDAYS"`
	NumMinSharedAnswersForPrivateMessages             int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_NUMMINSHAREDANSWERSFORPRIVATEMESSAGES"`
	NotifEmojiDebounceTime                            time.Duration `env:"PAGODA_APP_OPERATIONALCONSTANTS_NOTIFEMOJIDEBOUNCETIME"`
	NotifyNewAnswerFromUnansweredQuestionDebounceTime time.Duration `env:"PAGODA_APP_OPERATIONALCONSTANTS_NOTIFYNEWANSWERFROMUNANSWEREDQUESTIONDEBOUNCETIME"`
	MinAnswerLen                                      int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_MINANSWERLEN"`
	PaymentsEnabled                                   bool          `env:"PAGODA_APP_OPERATIONALCONSTANTS_PAYMENTSENABLED"`
	ProTrialTimespanInDays                            int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_PROTRIALTIMESPANINDAYS"`
	ProductProCode                                    string        `env:"PAGODA_APP_OPERATIONALCONSTANTS_PRODUCTPROCODE"`
	ProductProPrice                                   float32       `env:"PAGODA_APP_OPERATIONALCONSTANTS_PRODUCTPROPRICE"`
	PaymentFailedGracePeriodInDays                    int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_PAYMENTFAILEDGRACEPERIODINDAYS"`
	DeleteStaleNotificationAfterDays                  int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_DELETESTALENOTIFICATIONAFTERDAYS"`
	MaxLikedQuestionHistoryFreePlan                   int           `env:"PAGODA_APP_OPERATIONALCONSTANTS_MAXLIKEDQUESTIONHISTORYFREEPLAN"`
}

type PasswordTokenConfig

type PasswordTokenConfig struct {
	Expiration time.Duration `env:"PAGODA_APP_PASSWORDTOKEN_EXPIRATION,PAGODA_APP_PASSWORDTOKENEXPIRATION"`
	Length     int           `env:"PAGODA_APP_PASSWORDTOKEN_LENGTH,PAGODA_APP_PASSWORDTOKENLENGTH"`
}

type PhoneConfig

type PhoneConfig struct {
	SenderID                        string `env:"PAGODA_PHONE_SENDERID"`
	Region                          string `env:"PAGODA_PHONE_REGION"`
	ValidationCodeExpirationMinutes int    `env:"PAGODA_PHONE_VALIDATIONCODEEXPIRATIONMINUTES"`
}

type ProcessesConfig

type ProcessesConfig struct {
	Web       bool `env:"PAGODA_PROCESSES_WEB"`
	Worker    bool `env:"PAGODA_PROCESSES_WORKER"`
	Scheduler bool `env:"PAGODA_PROCESSES_SCHEDULER"`
	CoLocated bool `env:"PAGODA_PROCESSES_COLOCATED"`
}

type RecommenderConfig

type RecommenderConfig struct {
	NumProfilesToMatchAtOnce int `env:"PAGODA_RECOMMENDER_NUMPROFILESTOMATCHATONCE"`
}

type RuntimeConfig

type RuntimeConfig struct {
	Profile runtimeprofile `env:"PAGODA_RUNTIME_PROFILE"`
}

type RuntimeMetadata

type RuntimeMetadata struct {
	Database DatabaseRuntimeMetadata `json:"database"`
	Managed  ManagedRuntimeMetadata  `json:"managed"`
}

RuntimeMetadata reports normalized runtime capability metadata for status/reporting surfaces.

type SecurityConfig

type SecurityConfig struct {
	Headers SecurityHeadersConfig
}

type SecurityHeadersConfig

type SecurityHeadersConfig struct {
	Enabled bool   `env:"PAGODA_SECURITY_HEADERS_ENABLED,SECURITY_HEADERS_ENABLED" env-default:"true"`
	HSTS    bool   `env:"PAGODA_SECURITY_HEADERS_HSTS,SECURITY_HEADERS_HSTS" env-default:"false"`
	CSP     string `env:"PAGODA_SECURITY_HEADERS_CSP,SECURITY_HEADERS_CSP"`
}

type SettingAccess

type SettingAccess string

SettingAccess defines whether a setting is locally editable, locked, or controlled externally.

const (
	SettingAccessEditable          SettingAccess = "editable"
	SettingAccessReadOnly          SettingAccess = "read-only"
	SettingAccessExternallyManaged SettingAccess = "externally-managed"
)

type StorageConfig

type StorageConfig struct {
	Driver                    storagedriver `env:"PAGODA_STORAGE_DRIVER"`
	LocalStoragePath          string        `env:"PAGODA_STORAGE_LOCALSTORAGEPATH" env-default:"./uploads"`
	AppBucketName             string        `env:"PAGODA_STORAGE_APPBUCKETNAME"`
	StaticFilesBucketName     string        `env:"PAGODA_STORAGE_STATICFILESBUCKETNAME"`
	S3Endpoint                string        `env:"PAGODA_STORAGE_S3ENDPOINT"`
	S3AccessKey               string        `env:"PAGODA_STORAGE_S3ACCESSKEY"`
	S3SecretKey               string        `env:"PAGODA_STORAGE_S3SECRETKEY"`
	S3UseSSL                  bool          `env:"PAGODA_STORAGE_S3USESSL"`
	ProfilePhotoMaxFileSizeMB int64         `env:"PAGODA_STORAGE_PROFILEPHOTOMAXFILESIZEMB"`
	PhotosMaxFileSizeMB       int64         `env:"PAGODA_STORAGE_PHOTOSMAXFILESIZEMB"`
}

type TLSConfig

type TLSConfig struct {
	Enabled     bool   `env:"PAGODA_HTTP_TLS_ENABLED"`
	Certificate string `env:"PAGODA_HTTP_TLS_CERTIFICATE"`
	Key         string `env:"PAGODA_HTTP_TLS_KEY"`
}

type UIConfig

type UIConfig struct {
	Provider uiprovider `env:"PAGODA_UI_PROVIDER"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL