docs(phase-7): add configuration consolidation planning

- Phase 7: Config Consolidation
- CONTEXT.md: Defines scope, decisions, and requirements
- PLAN.md: 18-task implementation plan with detailed acceptance criteria
- Centralize all configs into config/ folder
- Update deploy scripts, backend loading, and documentation
- Maintain backward compatibility with inventory.env

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 12:07:39 +03:00
parent 8aeabcf1f5
commit 2b7a2b3a89
2 changed files with 604 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
# Phase 7: Config Consolidation - Context
**Gathered:** 2026-04-23
**Status:** Ready for planning
**Source:** User Requirements
---
## Phase Boundary
Consolidate all application configuration files into a centralized `config/` folder in the project root. This includes backend configurations, frontend configurations, deployment settings, and network configurations. Update all deployment scripts, application startup procedures, and backend/frontend code to load configurations from this centralized location.
**Scope:**
- Create and establish `config/` folder as the single source of truth for all application configuration
- Migrate existing configuration files (inventory.env and variants) to config folder with meaningful names
- Update all scripts (deploy.sh, run_standalone.sh, etc.) to reference the new config location
- Refactor backend config_loader.py and config_manager.py to read from config folder
- Update frontend environment loading if applicable
- Verify and clean up root directory scripts that are no longer needed
- Ensure Docker deployment, standalone deployment, and development all work correctly with new structure
**Deliverables:**
- `config/` folder with structured configuration files
- Updated backend configuration loading mechanism
- Updated deployment scripts
- Updated startup procedures (Docker and standalone)
- Documentation of configuration structure in README/DEPLOYMENT.md
---
## Implementation Decisions
### Configuration Structure
- Create `config/` folder in project root as the central location for all configurations
- Use meaningful filenames: `backend.env`, `frontend.env`, `network.env`, `docker.env` (for docker-compose)
- Keep backward compatibility: Support both old (`inventory.env`) and new (`config/backend.env`) paths during transition
- Environment variable precedence: System env vars > Docker build args > config/backend.env > defaults in code
### Backend Loading
- Update `backend/config_loader.py` to look for configs in `config/backend.env` first
- If not found, fall back to `inventory.env` (backward compatibility)
- If neither exists, use system environment variables
- Log which config source is being used for debugging
### Deployment Scripts
- `deploy.sh`: Source environment from `config/network.env` or `config/docker.env` instead of `inventory.env`
- `run_standalone.sh`: Source configuration from `config/backend.env` and `config/network.env`
- Docker Compose: Updated to reference `config/docker.env`
- Scripts should create symlinks or validate that config folder exists before running
### Cleanup Actions
- Remove or archive `inventory.env` templates after migration
- Audit root directory scripts for redundancy
- Update .gitignore to ensure config/ folder structure is tracked (if needed)
### Documentation Updates
- Update DEPLOYMENT.md with new config folder structure
- Update README.md with configuration setup instructions
- Add config/README.md explaining each config file's purpose
---
## Specific Ideas
1. **Config Files to Create:**
- `config/backend.env` — Backend-specific variables (database, AI keys, auth settings)
- `config/frontend.env` — Frontend-specific variables (API endpoints, feature flags)
- `config/network.env` — Network/deployment variables (ports, SSL, server IPs)
- `config/docker.env` — Docker-specific overrides (for docker-compose.yml)
- `config/README.md` — Documentation of all configuration files
2. **Scripts to Update:**
- `deploy.sh` — Update to source from config/ folder
- `run_standalone.sh` — Update network config loading
- `export_prod.sh` — Ensure it uses new config structure
- `install_service.sh` — Update systemd service to reference new config paths
- `__push_ALL_to_remote.sh` — Review for config-related updates
3. **Backend Changes:**
- `backend/config_loader.py` — Update load order: config/backend.env > inventory.env > env vars
- `backend/config_manager.py` — Update to read/write from config/backend.env
- `backend/entrypoint.sh` — Source from config/ instead of root level
4. **Testing Requirements:**
- Docker deployment with new config structure
- Standalone deployment with new config structure
- Environment variable override behavior still works
- Backward compatibility: old inventory.env still loads if config/ doesn't exist
---
## Deferred Ideas
- Dynamic config hot-reload without restart (future optimization)
- Config validation framework (future enhancement)
- Encrypted sensitive values in config files (future security enhancement)
- Web UI for configuration management (future feature)
---
*Phase: 7-config-consolidation*
*Context gathered: 2026-04-23 from user requirements*