App Configuration
createAppConfig
Creates and initializes the application configuration.
Parameters
Configuration options to override defaults
Base URL for API requests
environment
'development' | 'staging' | 'production'
Current environment
Feature flag configuration
Authentication configuration
Theme and UI configuration
Analytics and tracking configuration
Return Value
Initialized application configuration object
Example
import { createAppConfig } from '@/config';
const config = createAppConfig({
apiUrl: process.env.NEXT_PUBLIC_API_URL,
environment: process.env.NODE_ENV as 'development' | 'production',
features: {
enableBetaFeatures: false,
enableAnalytics: true
}
});
export default config;
Feature Flags
FeatureFlags
Feature flag configuration object for enabling/disabling features.
Enable experimental beta features
Enable analytics tracking
Enable push notifications
Enable social authentication providers
Enable file upload functionality
Enable real-time WebSocket features
Enable data export functionality
Example
import { config } from '@/config';
function DashboardPage() {
return (
<div>
<h1>Dashboard</h1>
{config.features.enableBetaFeatures && (
<BetaFeaturesPanel />
)}
{config.features.enableRealtime && (
<RealtimeUpdates />
)}
{config.features.enableExport && (
<ExportButton />
)}
</div>
);
}
Authentication Config
AuthConfig
Authentication configuration settings.
tokenKey
string
default:"'auth_token'"
LocalStorage key for storing auth token
refreshTokenKey
string
default:"'refresh_token'"
LocalStorage key for storing refresh token
Session timeout in milliseconds (default: 1 hour)
Automatically refresh tokens before expiry
Time before expiry to refresh token in ms (default: 5 minutes)
loginRedirect
string
default:"'/dashboard'"
URL to redirect to after successful login
URL to redirect to after logout
Example
import { createAppConfig } from '@/config';
const config = createAppConfig({
auth: {
tokenKey: 'app_token',
refreshTokenKey: 'app_refresh',
sessionTimeout: 7200000, // 2 hours
autoRefresh: true,
refreshThreshold: 600000, // 10 minutes
loginRedirect: '/home',
logoutRedirect: '/'
}
});
Theme Configuration
ThemeConfig
Theme and visual configuration settings.
defaultMode
'light' | 'dark' | 'system'
default:"'light'"
Default color mode
primaryColor
string
default:"'#3B82F6'"
Primary brand color (hex code)
secondaryColor
string
default:"'#10B981'"
Secondary brand color (hex code)
fontFamily
string
default:"'Inter, sans-serif'"
Default font family
Default border radius in pixels
Example
import { createAppConfig } from '@/config';
const config = createAppConfig({
theme: {
defaultMode: 'dark',
primaryColor: '#8B5CF6',
secondaryColor: '#EC4899',
fontFamily: 'Roboto, sans-serif',
borderRadius: 12,
compactMode: false
}
});
Analytics Configuration
AnalyticsConfig
Analytics and tracking configuration.
Enable analytics tracking
Analytics tracking ID (e.g., Google Analytics)
Enable debug mode for analytics
Anonymize user IP addresses
Automatically track page views
Example
import { createAppConfig } from '@/config';
const config = createAppConfig({
analytics: {
enabled: process.env.NODE_ENV === 'production',
trackingId: process.env.NEXT_PUBLIC_GA_ID,
debug: process.env.NODE_ENV === 'development',
anonymizeIp: true,
trackPageViews: true,
trackEvents: true,
trackErrors: true
}
});
API Configuration
ApiConfig
API client configuration settings.
Base URL for all API requests
Request timeout in milliseconds
Number of retry attempts for failed requests
Delay between retries in milliseconds
Default headers for all requests
Send cookies with cross-origin requests
Example
import { createAppConfig } from '@/config';
const config = createAppConfig({
api: {
baseURL: process.env.NEXT_PUBLIC_API_URL,
timeout: 30000,
retries: 3,
retryDelay: 1000,
headers: {
'Content-Type': 'application/json',
'X-App-Version': '1.0.0'
},
withCredentials: true
}
});
Getting Config Values
useConfig
React hook to access configuration values.
Return Value
Current application configuration
Example
import { useConfig } from '@/hooks/useConfig';
function MyComponent() {
const config = useConfig();
return (
<div>
<p>API URL: {config.apiUrl}</p>
<p>Environment: {config.environment}</p>
{config.features.enableBetaFeatures && (
<BetaFeature />
)}
</div>
);
}
Updating Config at Runtime
updateConfig
Updates configuration values at runtime.
Parameters
updates
Partial<AppConfig>
required
Configuration values to update
Example
import { updateConfig } from '@/config';
function SettingsPage() {
const toggleDarkMode = () => {
updateConfig({
theme: {
defaultMode: 'dark'
}
});
};
const enableBetaFeatures = () => {
updateConfig({
features: {
enableBetaFeatures: true
}
});
};
return (
<div>
<button onClick={toggleDarkMode}>Enable Dark Mode</button>
<button onClick={enableBetaFeatures}>Enable Beta Features</button>
</div>
);
}