{ "project_type": "single", "services": { "frontend": { "path": ".", "tech_stack": ["next.js", "react", "typescript", "tailwindcss"], "port": 3000, "dev_command": "pnpm dev", "build_command": "pnpm build", "test_command": "pnpm test", "package_manager": "pnpm" } }, "infrastructure": { "docker": true, "docker_compose": true, "docker_port": 3003, "database": "supabase", "hosting": "vercel", "ci_cd": false }, "conventions": { "linter": "eslint", "formatter": "prettier", "testing": "vitest" }, "environment_variables": { "NEXT_PUBLIC_SUPABASE_URL": { "required": true, "description": "Supabase project URL", "example": "https://xxxxx.supabase.co" }, "NEXT_PUBLIC_SUPABASE_ANON_KEY": { "required": true, "description": "Supabase anonymous/public key", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, "NEXT_PUBLIC_GA_TRACKING_ID": { "required": false, "description": "Google Analytics 4 tracking ID", "example": "G-XXXXXXXXXX" }, "NEXT_PUBLIC_SITE_URL": { "required": true, "description": "Production site URL", "example": "https://damjan-savic.com" }, "NODE_ENV": { "required": false, "description": "Node environment (development/production)", "example": "production" }, "OPENAI_API_KEY": { "required": false, "description": "OpenAI API key (optional, for future blog image generation features)", "example": "sk-..." } } }