@shellapps/config
v1.15.3
Published
Configuration management for ShellApps ecosystem
Maintainers
Readme
@shellapps/config
Configuration management for the ShellApps ecosystem. This package provides environment-specific configuration for all ShellApps and ShellLabs services.
Installation
npm install @shellapps/configUsage
Basic Usage
import { getConfig } from '@shellapps/config';
const config = getConfig();
console.log(config.serviceUrls.apps); // https://apps.shellapps.com (in production)Environment Configuration
The package reads the SHELLAPPS_ENV environment variable to determine which configuration to load:
development(default) - Local development with localhost URLsstaging- Staging environment with *.shellapps.net / *.shelllabs.net domainsproduction- Production environment with *.shellapps.com / *.shelllabs.net domains
# Set environment
export SHELLAPPS_ENV=production
# Or inline
SHELLAPPS_ENV=staging node app.jsSpecific Configuration Getters
import {
getServiceUrls,
getS3Config,
getMongoConfig,
getFeatureFlags,
getEnvironment
} from '@shellapps/config';
// Get current environment
const env = getEnvironment(); // 'development' | 'staging' | 'production'
// Get service URLs
const urls = getServiceUrls();
console.log(urls.auth); // Auth service URL
console.log(urls.apps); // Main apps URL
console.log(urls.blog); // Blog URL
console.log(urls.admin); // ShellLabs admin URL
// Get S3 configuration
const s3 = getS3Config();
console.log(s3.buckets.assets); // Asset bucket name
console.log(s3.buckets.uploads); // Upload bucket name
// Get MongoDB configuration
const mongo = getMongoConfig();
console.log(mongo.database); // Database name
console.log(mongo.authDatabase); // Auth database name
// Get feature flags
const flags = getFeatureFlags();
console.log(flags.someFeature); // boolean valueDefault Export
import config from '@shellapps/config';
const appConfig = config.getConfig();
const serviceUrls = config.getServiceUrls();
const s3Config = config.getS3Config();TypeScript Types
All configuration objects are fully typed:
import type {
Config,
Environment,
ServiceUrls,
S3Config,
MongoConfig,
FeatureFlags
} from '@shellapps/config';
function setupApp(config: Config) {
// TypeScript will provide full intellisense and type checking
const authUrl = config.serviceUrls.auth;
const assetBucket = config.s3.buckets.assets;
}Configuration Structure
Service URLs
- Development: All services run on localhost with different ports
- Staging: Uses *.shellapps.net and *.shelllabs.net domains
- Production: Uses *.shellapps.com and *.shelllabs.net domains
S3 Buckets
Environment-specific bucket names:
- Assets bucket:
shellapps-{env}-assets - Uploads bucket:
shellapps-{env}-uploads - Backups bucket:
shellapps-{env}-backups
MongoDB
Environment-specific database names:
- Development:
shellapps_dev - Staging:
shellapps_staging - Production:
shellapps_production
Feature Flags
Object structure for enabling/disabling features per environment. Add flags as needed:
// In your app code
const flags = getFeatureFlags();
if (flags.newDashboard) {
// Show new dashboard
}Error Handling
The package throws descriptive errors for invalid configurations:
// If SHELLAPPS_ENV=invalid
try {
const config = getConfig();
} catch (error) {
console.error(error.message);
// "Invalid environment: invalid. Must be one of: development, staging, production"
}Development
# Install dependencies
npm install
# Build the package
npm run build
# Watch for changes during development
npm run dev
# Clean build artifacts
npm run cleanLicense
MIT
