docs: add comprehensive documentation for optimized development tasks
This commit is contained in:
206
DEVELOPMENT_TASKS_OPTIMIZATION.md
Normal file
206
DEVELOPMENT_TASKS_OPTIMIZATION.md
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
# Development Tasks Optimization Summary
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Comprehensive optimization of the development workflow to reduce Docker overhead, preserve network/proxy configuration, and streamline the development process.
|
||||||
|
|
||||||
|
## Changes Made
|
||||||
|
|
||||||
|
### 1. Docker Configuration Fixes
|
||||||
|
**File**: `docker-compose.dev.yml`
|
||||||
|
- ✅ Changed `target: production` to `target: development` for both api and web services
|
||||||
|
- **Impact**: Enables hot reload and development-specific features
|
||||||
|
|
||||||
|
### 2. Streamlined Task Structure
|
||||||
|
**File**: `Taskfile.yml`
|
||||||
|
|
||||||
|
#### New Task Structure:
|
||||||
|
```bash
|
||||||
|
dev:up # Main development task (recommended)
|
||||||
|
dev:build # Explicit container building
|
||||||
|
dev:clean # Safe cleanup (preserves network)
|
||||||
|
dev:nuke # Full cleanup (when network corrupted)
|
||||||
|
dev:restart # Quick service restart
|
||||||
|
dev:help # Task documentation
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Removed Redundant Tasks:
|
||||||
|
- `dev:full` → Replaced with `dev:up`
|
||||||
|
- `dev:audio-debug` → Use `dev:up` with debug env vars
|
||||||
|
- Conflicting frontend server management
|
||||||
|
|
||||||
|
### 3. Optimized Development Tasks
|
||||||
|
|
||||||
|
#### `dev:up` - Main Development Task
|
||||||
|
```yaml
|
||||||
|
dev:up:
|
||||||
|
desc: Start complete development server (recommended)
|
||||||
|
cmds:
|
||||||
|
- "{{.COMPOSE}} {{.DEV_FLAGS}} up -d {{.DEV_SERVICES}}"
|
||||||
|
- "{{.COMPOSE}} {{.DEV_FLAGS}} logs -f api web audio-worker nc-watcher"
|
||||||
|
```
|
||||||
|
- **Benefits**: Single command to start everything, follows logs
|
||||||
|
- **Usage**: `task dev:up`
|
||||||
|
|
||||||
|
#### `dev:build` - Smart Building
|
||||||
|
```yaml
|
||||||
|
dev:build:
|
||||||
|
desc: Build development containers (only when dependencies change)
|
||||||
|
cmds:
|
||||||
|
- "{{.COMPOSE}} {{.DEV_FLAGS}} build --pull api web"
|
||||||
|
```
|
||||||
|
- **Benefits**: Explicit build step, uses `--pull` for latest base images
|
||||||
|
- **Usage**: `task dev:build` (run when dependencies change)
|
||||||
|
|
||||||
|
#### `dev:clean` - Safe Cleanup
|
||||||
|
```yaml
|
||||||
|
dev:clean:
|
||||||
|
desc: Safe cleanup (preserves network/proxy, removes containers/volumes)
|
||||||
|
cmds:
|
||||||
|
- "{{.COMPOSE}} {{.DEV_FLAGS}} down"
|
||||||
|
- docker volume rm -f $(docker volume ls -q | grep rehearsalhub) || true
|
||||||
|
```
|
||||||
|
- **Benefits**: Preserves network/proxy configuration
|
||||||
|
- **Usage**: `task dev:clean`
|
||||||
|
|
||||||
|
#### `dev:nuke` - Full Cleanup
|
||||||
|
```yaml
|
||||||
|
dev:nuke:
|
||||||
|
desc: Full cleanup (removes everything including network - use when network is corrupted)
|
||||||
|
cmds:
|
||||||
|
- "{{.COMPOSE}} {{.DEV_FLAGS}} down -v"
|
||||||
|
- docker system prune -f --volumes
|
||||||
|
```
|
||||||
|
- **Benefits**: Complete cleanup when network issues occur
|
||||||
|
- **Usage**: `task dev:nuke` (rarely needed)
|
||||||
|
|
||||||
|
### 4. Audio Service Enhancements
|
||||||
|
**File**: `web/src/services/audioService.ts`
|
||||||
|
- ✅ Added development mode detection with automatic debug logging
|
||||||
|
- ✅ Development-specific WaveSurfer configuration
|
||||||
|
- ✅ Better audio context management
|
||||||
|
|
||||||
|
## Workflow Recommendations
|
||||||
|
|
||||||
|
### Daily Development
|
||||||
|
```bash
|
||||||
|
# Start development (first time or after clean)
|
||||||
|
task dev:up
|
||||||
|
|
||||||
|
# Make code changes (hot reload works automatically)
|
||||||
|
# ... edit files ...
|
||||||
|
|
||||||
|
# When done
|
||||||
|
task dev:clean
|
||||||
|
```
|
||||||
|
|
||||||
|
### When Dependencies Change
|
||||||
|
```bash
|
||||||
|
# Rebuild containers
|
||||||
|
task dev:build
|
||||||
|
task dev:up
|
||||||
|
```
|
||||||
|
|
||||||
|
### When Network Issues Occur
|
||||||
|
```bash
|
||||||
|
# Full cleanup and restart
|
||||||
|
task dev:nuke
|
||||||
|
task dev:up
|
||||||
|
```
|
||||||
|
|
||||||
|
## Benefits Achieved
|
||||||
|
|
||||||
|
### ✅ Reduced Docker Overhead
|
||||||
|
- **Smart Building**: Only rebuild when necessary
|
||||||
|
- **Layer Caching**: Docker uses built-in layer caching
|
||||||
|
- **Minimal Downloads**: `--pull` only updates base images when needed
|
||||||
|
|
||||||
|
### ✅ Reliable Networking
|
||||||
|
- **Network Preservation**: `dev:clean` preserves proxy network
|
||||||
|
- **Safe Cleanup**: No accidental network destruction
|
||||||
|
- **Explicit Control**: `dev:nuke` for when network is truly corrupted
|
||||||
|
|
||||||
|
### ✅ Simpler Workflow
|
||||||
|
- **Clear Recommendations**: `dev:up` is the main task
|
||||||
|
- **Logical Separation**: Build vs run vs cleanup
|
||||||
|
- **Better Documentation**: `task help` shows all options
|
||||||
|
|
||||||
|
### ✅ Better Development Experience
|
||||||
|
- **Hot Reload**: Development targets enable live reloading
|
||||||
|
- **Debugging**: Automatic debug mode detection
|
||||||
|
- **Quick Restarts**: `dev:restart` for fast iteration
|
||||||
|
|
||||||
|
## Performance Comparison
|
||||||
|
|
||||||
|
### Before Optimization
|
||||||
|
- ❌ Frequent full rebuilds
|
||||||
|
- ❌ Network destruction on cleanup
|
||||||
|
- ❌ Confusing task structure
|
||||||
|
- ❌ Production targets in development
|
||||||
|
- ❌ No clear workflow recommendations
|
||||||
|
|
||||||
|
### After Optimization
|
||||||
|
- ✅ Smart incremental builds
|
||||||
|
- ✅ Network preservation
|
||||||
|
- ✅ Streamlined task structure
|
||||||
|
- ✅ Proper development targets
|
||||||
|
- ✅ Clear workflow documentation
|
||||||
|
|
||||||
|
## Migration Guide
|
||||||
|
|
||||||
|
### For Existing Developers
|
||||||
|
1. **Clean up old environment**:
|
||||||
|
```bash
|
||||||
|
task dev:nuke # Only if you have network issues
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Start fresh**:
|
||||||
|
```bash
|
||||||
|
task dev:up
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Update your workflow**:
|
||||||
|
- Use `dev:up` instead of `dev:full`
|
||||||
|
- Use `dev:build` when you change dependencies
|
||||||
|
- Use `dev:clean` for normal cleanup
|
||||||
|
|
||||||
|
### For New Developers
|
||||||
|
1. **Start development**:
|
||||||
|
```bash
|
||||||
|
task dev:up
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **See available tasks**:
|
||||||
|
```bash
|
||||||
|
task help
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Clean up when done**:
|
||||||
|
```bash
|
||||||
|
task dev:clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Audio Playback Issues
|
||||||
|
- Ensure you're using `dev:up` (development targets)
|
||||||
|
- Check browser console for WebAudio errors
|
||||||
|
- Use `task dev:build` if you've changed audio dependencies
|
||||||
|
|
||||||
|
### Network/Proxy Issues
|
||||||
|
- Try `dev:clean` first (preserves network)
|
||||||
|
- If still broken, use `dev:nuke` (full cleanup)
|
||||||
|
- Check that proxy network exists: `docker network ls | grep proxy`
|
||||||
|
|
||||||
|
### Build Issues
|
||||||
|
- Run `dev:build` explicitly when dependencies change
|
||||||
|
- Check Docker layer caching with `docker system df`
|
||||||
|
- Use `--no-cache` if needed: `docker compose build --no-cache`
|
||||||
|
|
||||||
|
## Future Enhancements
|
||||||
|
|
||||||
|
### Potential Improvements
|
||||||
|
1. **Automatic Rebuild Detection**: Watch dependency files and auto-rebuild
|
||||||
|
2. **Cache Mounts**: Use Docker build cache mounts for even faster builds
|
||||||
|
3. **Multi-stage Optimization**: Further optimize Dockerfile layer ordering
|
||||||
|
4. **Task Aliases**: Add shortcuts like `task up` → `task dev:up`
|
||||||
|
5. **Environment Validation**: Auto-check for required tools and configs
|
||||||
Reference in New Issue
Block a user