ConfigurationEnvironment

Environment Configuration

All app configuration is centralized in Core/Environment.swift via the AppConfig enum.

AppConfig Properties

API Configuration

PropertyTypeDefaultDescription
apiBaseURLStringhttp://localhost:3000/api (debug) / https://staccato-coffee.vercel.app/api (release)Base URL for API calls

Supabase Configuration

PropertyTypeEnv OverrideDescription
supabaseURLStringSUPABASE_URLSupabase project URL
supabaseAnonKeyStringSUPABASE_ANON_KEYSupabase anonymous key

Square Configuration

PropertyTypeEnv OverrideDescription
squareApplicationIdStringSQUARE_APPLICATION_IDSquare app ID (sandbox in debug)
squareLocationIdStringSQUARE_LOCATION_IDSquare location ID

App Constants

PropertyTypeValueDescription
taxRateDouble0.0858.5% tax rate
currencyCodeString"USD"Currency
countryCodeString"US"Country

Store Information

PropertyValue
storeName”Staccato Coffee House”
storeTagline”Books · Coffee · Vinyls”
storeAddress”321 N Main Street”
storeCity”McAllen, TX 78501”
storePhone”(956) 598-4151”
storeHours”Mon-Sun: 7AM - 9PM”
storeInstagramhttps://www.instagram.com/staccatocoffeehouse/
storeTikTokhttps://www.tiktok.com/@staccatocoffeehouse
storeWebsiteURLhttps://staccatocoffeehouse.com
storeOrderOnlineURLhttps://staccatocoffeehouse.square.site

Environment Variable Overrides

The app reads environment variables at runtime via ProcessInfo.processInfo.environment. This allows setting values in Xcode schemes without modifying source code:

static var supabaseURL: String {
    ProcessInfo.processInfo.environment["SUPABASE_URL"]
        ?? "https://pzwfeskyqlsxvaietzrn.supabase.co"
}

To set in Xcode: Product → Scheme → Edit Scheme → Run → Arguments → Environment Variables.

Debug vs Release

Square uses sandbox credentials in debug mode:

static var squareApplicationId: String {
    #if DEBUG
    return ProcessInfo.processInfo.environment["SQUARE_APPLICATION_ID"]
        ?? "sandbox-sq0idb-DEMO"
    #else
    return ProcessInfo.processInfo.environment["SQUARE_APPLICATION_ID"]
        ?? "your-production-app-id"
    #endif
}

Info.plist

Key configuration in Info.plist:

  • Bundle ID: com.staccato.coffee
  • URL Schemes: staccatocoffee (for OAuth callback: staccatocoffee://auth/callback)
  • NSAppTransportSecurity: Localhost exception for development

Entitlements

StaccatoCoffee.entitlements:

  • Sign In with Apple
  • Apple Pay: merchant.com.staccato.coffee