01-Feb-2026 — Environment-setup — further features #146
build 454 — commit 8660a24
Comprehensive environment management overhaul with API and MongoDB migration
Introduces new environment configuration API, MongoDB cluster-based config, and enhanced UI with vendor branding and dashboard links.
New Environment Configuration API
- RESTful endpoints for reading and writing environment configurations
EnvironmentConfigServicefor centralised config management- Separation of concerns: environment config extracted from backup/restore
- Config initialisation from files with validation and error handling
MongoDB Configuration Migration
- Migrate from
urifield toclusterfield in MongoDB configuration - Cluster field stores cluster name without .mongodb.net suffix
- Database migration script (20260201000000) converts existing records
- Backward compatible: handles both legacy URI and new cluster formats
- Improved regex parsing for cluster extraction from URIs
Enhanced Environment Setup UI:
- Vendor logos in all configuration section headings
- Ramblers logo dynamically loaded from System Settings
- AWS, MongoDB, and Fly.io static brand logos
- External link buttons for quick dashboard access:
- AWS S3 Console (global and per-environment bucket views)
- MongoDB Atlas dashboard
- Fly.io app-specific dashboard
- Deployed application URL
- Environment list alphabetically sorted by name
- Improved visual spacing and button styling consistency
Backend Architecture Improvements:
- New
environments-config.tsmodule for config operations - Enhanced
config-initializerwith cluster field population - Updated backup/restore service to use new config service
- CLI tools migrated to cluster-based MongoDB configuration
- Fly.toml path resolution fixed for compiled environments
Technical Implementation
- New
EnvironmentConfigandEnvironmentsConfigmodels - Integration with SystemConfigService for dynamic Ramblers logo
- Custom
.btn-outline-flyiostyling for brand consistency - Shared
sortBy()utility for environment sorting - Type-safe API routes with proper error handling