Local Dev Experience Evaluator
Evaluate and recommend the best local development approach for any stack.
Standalone Usage
Can be invoked directly:
- "How do I run this stack locally?"
- "Should I use docker-compose or local k8s?"
- "Evaluate local dev experience for Next.js + Supabase"
Assumptions
- Docker Desktop is available
- Local Kubernetes is available (Docker Desktop K8s, minikube, kind, or k3s)
Available Approaches
| Approach |
When to Use |
Complexity |
| docker-compose |
Simple apps, all deps containerized |
Low |
| local-k8s |
K8s-native apps, need K8s features |
Medium |
| hybrid |
Complex apps: deps in compose, services in k8s |
Medium-High |
| aspire |
.NET distributed apps |
Medium |
| native |
Simple apps, few deps |
Very Low |
When to Use Each
docker-compose:
- Web app + database + cache
- Microservices with < 5 services
- No K8s-specific features needed
- Team familiar with Docker
local-k8s:
- Using K8s-specific features (ConfigMaps, Services, Ingress)
- Deploying to K8s in production
- Need to test K8s manifests locally
- Using Helm charts
hybrid:
- Complex microservices architecture
- Heavy stateful deps (databases) in compose
- Stateless services in K8s
- Need both simplicity and K8s testing
aspire:
- .NET distributed applications
- Need unified observability dashboard
- Code-first infrastructure definition
- Multiple .NET services
native:
- Single service with minimal deps
- Using local SQLite or in-memory
- Frontend-only development
- Rapid iteration priority
Evaluation Criteria
Time to First Run
| Rating |
Time |
Description |
| Excellent |
< 5 min |
git clone && docker-compose up |
| Good |
5-15 min |
Multiple steps, some build time |
| Fair |
15-30 min |
Complex setup, many deps |
| Poor |
> 30 min |
Manual steps, external deps |
Dependency Complexity
| Level |
Containers |
Description |
| Low |
1-3 |
Standard images (postgres, redis) |
| Medium |
4-6 |
Some custom config |
| High |
7+ |
Complex networking, custom builds |
Production Parity
| Area |
Full |
Partial |
None |
| Auth |
Same provider |
Mock/simplified |
Disabled |
| Data |
Same DB + migrations |
Same DB + seed |
Different DB |
| Async |
Same queue/events |
Local queue |
Sync only |
| Config |
Same config system |
.env files |
Hardcoded |
Output Contract
local_dev_evaluation:
stack: "<stack description>"
recommended_approach: "<docker-compose|local-k8s|hybrid|aspire|native>"
time_to_first_run: "<excellent|good|fair|poor>"
estimated_minutes: <N>
dependency_complexity: "<low|medium|high>"
container_count: <N>
prod_parity:
auth: "<full|partial|none>"
data: "<full|partial|none>"
async: "<full|partial|none>"
config: "<full|partial|none>"
overall: "<high|medium|low>"
debugging_support: "<excellent|good|fair|poor>"
dev_observability: "<excellent|good|fair|poor>"
dx_score: <1-5>
setup_steps:
- step: "<step name>"
command: "<command>"
files_needed:
- "<file 1>"
- "<file 2>"
notes:
- "<important consideration>"
recommendations:
- "<recommendation>"
Example: Next.js + Supabase
local_dev_evaluation:
stack: "Next.js + Supabase"
recommended_approach: "native"
time_to_first_run: "excellent"
estimated_minutes: 3
dependency_complexity: "low"
container_count: 1 # Supabase CLI runs all-in-one
prod_parity:
auth: "full"
data: "full"
async: "full"
config: "partial"
overall: "high"
debugging_support: "excellent"
dev_observability: "good"
dx_score: 5
setup_steps:
- step: "Install Supabase CLI"
command: "brew install supabase/tap/supabase"
- step: "Start local Supabase"
command: "supabase start"
- step: "Start Next.js"
command: "npm run dev"
notes:
- "Supabase CLI includes: PostgreSQL, Auth, Storage, Edge Functions"
- "Studio UI available at localhost:54323"
Example: EKS + Aurora
local_dev_evaluation:
stack: "React + Node.js API + Aurora PostgreSQL"
recommended_approach: "docker-compose"
time_to_first_run: "good"
estimated_minutes: 10
dependency_complexity: "medium"
container_count: 4 # frontend, api, postgres, redis
prod_parity:
auth: "partial" # Local JWT vs Cognito
data: "full" # Same PostgreSQL
async: "partial" # Local Redis vs ElastiCache
config: "partial"
overall: "medium"
dx_score: 4
setup_steps:
- step: "Copy environment"
command: "cp .env.example .env.local"
- step: "Start services"
command: "docker-compose up -d"
- step: "Run migrations"
command: "npm run db:migrate"
- step: "Start dev server"
command: "npm run dev"
files_needed:
- "docker-compose.yml"
- ".env.example"
- "docker-compose.override.yml (optional)"
Scoring Guide
| DX Score |
Criteria |
| 5 |
< 5 min, low complexity, high parity, excellent debugging |
| 4 |
5-15 min, low-medium complexity, good parity |
| 3 |
15-30 min, medium complexity, partial parity |
| 2 |
> 30 min, high complexity, limited parity |
| 1 |
Complex manual setup, poor parity, difficult debugging |
1---2name: local-dev-evaluator3description: Evaluate local development experience for any stack. Use when user asks about local dev setup, docker-compose vs kubernetes, or developer experience for a technology stack.4---56# Local Dev Experience Evaluator78Evaluate and recommend the best local development approach for any stack.910## Standalone Usage1112Can be invoked directly:13- "How do I run this stack locally?"14- "Should I use docker-compose or local k8s?"15- "Evaluate local dev experience for Next.js + Supabase"1617## Assumptions1819- Docker Desktop is available20- Local Kubernetes is available (Docker Desktop K8s, minikube, kind, or k3s)2122## Available Approaches2324| Approach | When to Use | Complexity |25|----------|-------------|------------|26| **docker-compose** | Simple apps, all deps containerized | Low |27| **local-k8s** | K8s-native apps, need K8s features | Medium |28| **hybrid** | Complex apps: deps in compose, services in k8s | Medium-High |29| **aspire** | .NET distributed apps | Medium |30| **native** | Simple apps, few deps | Very Low |3132### When to Use Each3334**docker-compose**:35- Web app + database + cache36- Microservices with < 5 services37- No K8s-specific features needed38- Team familiar with Docker3940**local-k8s**:41- Using K8s-specific features (ConfigMaps, Services, Ingress)42- Deploying to K8s in production43- Need to test K8s manifests locally44- Using Helm charts4546**hybrid**:47- Complex microservices architecture48- Heavy stateful deps (databases) in compose49- Stateless services in K8s50- Need both simplicity and K8s testing5152**aspire**:53- .NET distributed applications54- Need unified observability dashboard55- Code-first infrastructure definition56- Multiple .NET services5758**native**:59- Single service with minimal deps60- Using local SQLite or in-memory61- Frontend-only development62- Rapid iteration priority6364## Evaluation Criteria6566### Time to First Run6768| Rating | Time | Description |69|--------|------|-------------|70| Excellent | < 5 min | `git clone && docker-compose up` |71| Good | 5-15 min | Multiple steps, some build time |72| Fair | 15-30 min | Complex setup, many deps |73| Poor | > 30 min | Manual steps, external deps |7475### Dependency Complexity7677| Level | Containers | Description |78|-------|------------|-------------|79| Low | 1-3 | Standard images (postgres, redis) |80| Medium | 4-6 | Some custom config |81| High | 7+ | Complex networking, custom builds |8283### Production Parity8485| Area | Full | Partial | None |86|------|------|---------|------|87| **Auth** | Same provider | Mock/simplified | Disabled |88| **Data** | Same DB + migrations | Same DB + seed | Different DB |89| **Async** | Same queue/events | Local queue | Sync only |90| **Config** | Same config system | .env files | Hardcoded |9192## Output Contract9394```yaml95local_dev_evaluation:96 stack: "<stack description>"9798 recommended_approach: "<docker-compose|local-k8s|hybrid|aspire|native>"99100 time_to_first_run: "<excellent|good|fair|poor>"101 estimated_minutes: <N>102103 dependency_complexity: "<low|medium|high>"104 container_count: <N>105106 prod_parity:107 auth: "<full|partial|none>"108 data: "<full|partial|none>"109 async: "<full|partial|none>"110 config: "<full|partial|none>"111 overall: "<high|medium|low>"112113 debugging_support: "<excellent|good|fair|poor>"114 dev_observability: "<excellent|good|fair|poor>"115116 dx_score: <1-5>117118 setup_steps:119 - step: "<step name>"120 command: "<command>"121122 files_needed:123 - "<file 1>"124 - "<file 2>"125126 notes:127 - "<important consideration>"128129 recommendations:130 - "<recommendation>"131```132133## Example: Next.js + Supabase134135```yaml136local_dev_evaluation:137 stack: "Next.js + Supabase"138139 recommended_approach: "native"140141 time_to_first_run: "excellent"142 estimated_minutes: 3143144 dependency_complexity: "low"145 container_count: 1 # Supabase CLI runs all-in-one146147 prod_parity:148 auth: "full"149 data: "full"150 async: "full"151 config: "partial"152 overall: "high"153154 debugging_support: "excellent"155 dev_observability: "good"156157 dx_score: 5158159 setup_steps:160 - step: "Install Supabase CLI"161 command: "brew install supabase/tap/supabase"162 - step: "Start local Supabase"163 command: "supabase start"164 - step: "Start Next.js"165 command: "npm run dev"166167 notes:168 - "Supabase CLI includes: PostgreSQL, Auth, Storage, Edge Functions"169 - "Studio UI available at localhost:54323"170```171172## Example: EKS + Aurora173174```yaml175local_dev_evaluation:176 stack: "React + Node.js API + Aurora PostgreSQL"177178 recommended_approach: "docker-compose"179180 time_to_first_run: "good"181 estimated_minutes: 10182183 dependency_complexity: "medium"184 container_count: 4 # frontend, api, postgres, redis185186 prod_parity:187 auth: "partial" # Local JWT vs Cognito188 data: "full" # Same PostgreSQL189 async: "partial" # Local Redis vs ElastiCache190 config: "partial"191 overall: "medium"192193 dx_score: 4194195 setup_steps:196 - step: "Copy environment"197 command: "cp .env.example .env.local"198 - step: "Start services"199 command: "docker-compose up -d"200 - step: "Run migrations"201 command: "npm run db:migrate"202 - step: "Start dev server"203 command: "npm run dev"204205 files_needed:206 - "docker-compose.yml"207 - ".env.example"208 - "docker-compose.override.yml (optional)"209```210211## Scoring Guide212213| DX Score | Criteria |214|----------|----------|215| 5 | < 5 min, low complexity, high parity, excellent debugging |216| 4 | 5-15 min, low-medium complexity, good parity |217| 3 | 15-30 min, medium complexity, partial parity |218| 2 | > 30 min, high complexity, limited parity |219| 1 | Complex manual setup, poor parity, difficult debugging |