# 01-Feb-2026 — Environment-setup — further  features [#146](https://github.com/nbarrett/ngx-ramblers/issues/146)

## [build 454](https://github.com/nbarrett/ngx-ramblers/actions/runs/21567194325) — [commit 8660a24](https://github.com/nbarrett/ngx-ramblers/commit/8660a2400d2d0a6ddc5cc6dbfcd5acdb532a7064)

_____

### 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
- `EnvironmentConfigService` for 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 `uri` field to `cluster` field 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.ts` module for config operations
- Enhanced `config-initializer` with 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 `EnvironmentConfig` and `EnvironmentsConfig` models
- Integration with SystemConfigService for dynamic Ramblers logo
- Custom `.btn-outline-flyio` styling for brand consistency
- Shared `sortBy()` utility for environment sorting
- Type-safe API routes with proper error handling

