ai-flow-dev 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +573 -570
- package/package.json +74 -74
- package/prompts/backend/flow-build-phase-0.md +535 -535
- package/prompts/backend/flow-build-phase-1.md +626 -626
- package/prompts/backend/flow-build-phase-10.md +340 -340
- package/prompts/backend/flow-build-phase-2.md +573 -573
- package/prompts/backend/flow-build-phase-3.md +834 -834
- package/prompts/backend/flow-build-phase-4.md +554 -554
- package/prompts/backend/flow-build-phase-5.md +703 -703
- package/prompts/backend/flow-build-phase-6.md +524 -524
- package/prompts/backend/flow-build-phase-7.md +1001 -1001
- package/prompts/backend/flow-build-phase-8.md +1407 -1407
- package/prompts/backend/flow-build-phase-9.md +477 -477
- package/prompts/backend/flow-build.md +137 -137
- package/prompts/backend/flow-check-review.md +656 -20
- package/prompts/backend/flow-check-test.md +526 -14
- package/prompts/backend/flow-check.md +725 -67
- package/prompts/backend/flow-commit.md +88 -119
- package/prompts/backend/flow-docs-sync.md +354 -354
- package/prompts/backend/flow-finish.md +919 -0
- package/prompts/backend/flow-release.md +949 -0
- package/prompts/backend/flow-work-feature.md +61 -61
- package/prompts/backend/flow-work-fix.md +46 -46
- package/prompts/backend/flow-work-refactor.md +48 -48
- package/prompts/backend/flow-work-resume.md +34 -34
- package/prompts/backend/flow-work.md +1098 -1286
- package/prompts/desktop/flow-build-phase-0.md +359 -359
- package/prompts/desktop/flow-build-phase-1.md +295 -295
- package/prompts/desktop/flow-build-phase-10.md +357 -357
- package/prompts/desktop/flow-build-phase-2.md +282 -282
- package/prompts/desktop/flow-build-phase-3.md +291 -291
- package/prompts/desktop/flow-build-phase-4.md +308 -308
- package/prompts/desktop/flow-build-phase-5.md +269 -269
- package/prompts/desktop/flow-build-phase-6.md +350 -350
- package/prompts/desktop/flow-build-phase-7.md +297 -297
- package/prompts/desktop/flow-build-phase-8.md +541 -541
- package/prompts/desktop/flow-build-phase-9.md +439 -439
- package/prompts/desktop/flow-build.md +156 -156
- package/prompts/desktop/flow-check-review.md +656 -20
- package/prompts/desktop/flow-check-test.md +526 -14
- package/prompts/desktop/flow-check.md +725 -67
- package/prompts/desktop/flow-commit.md +88 -119
- package/prompts/desktop/flow-docs-sync.md +354 -354
- package/prompts/desktop/flow-finish.md +910 -0
- package/prompts/desktop/flow-release.md +662 -0
- package/prompts/desktop/flow-work-feature.md +61 -61
- package/prompts/desktop/flow-work-fix.md +46 -46
- package/prompts/desktop/flow-work-refactor.md +48 -48
- package/prompts/desktop/flow-work-resume.md +34 -34
- package/prompts/desktop/flow-work.md +1202 -1390
- package/prompts/frontend/flow-build-phase-0.md +425 -425
- package/prompts/frontend/flow-build-phase-1.md +626 -626
- package/prompts/frontend/flow-build-phase-10.md +33 -33
- package/prompts/frontend/flow-build-phase-2.md +573 -573
- package/prompts/frontend/flow-build-phase-3.md +782 -782
- package/prompts/frontend/flow-build-phase-4.md +554 -554
- package/prompts/frontend/flow-build-phase-5.md +703 -703
- package/prompts/frontend/flow-build-phase-6.md +524 -524
- package/prompts/frontend/flow-build-phase-7.md +1001 -1001
- package/prompts/frontend/flow-build-phase-8.md +872 -872
- package/prompts/frontend/flow-build-phase-9.md +94 -94
- package/prompts/frontend/flow-build.md +137 -137
- package/prompts/frontend/flow-check-review.md +656 -20
- package/prompts/frontend/flow-check-test.md +526 -14
- package/prompts/frontend/flow-check.md +725 -67
- package/prompts/frontend/flow-commit.md +88 -119
- package/prompts/frontend/flow-docs-sync.md +550 -550
- package/prompts/frontend/flow-finish.md +910 -0
- package/prompts/frontend/flow-release.md +519 -0
- package/prompts/frontend/flow-work-api.md +1540 -0
- package/prompts/frontend/flow-work-feature.md +61 -61
- package/prompts/frontend/flow-work-fix.md +38 -38
- package/prompts/frontend/flow-work-refactor.md +48 -48
- package/prompts/frontend/flow-work-resume.md +34 -34
- package/prompts/frontend/flow-work.md +1583 -1320
- package/prompts/mobile/flow-build-phase-0.md +425 -425
- package/prompts/mobile/flow-build-phase-1.md +626 -626
- package/prompts/mobile/flow-build-phase-10.md +32 -32
- package/prompts/mobile/flow-build-phase-2.md +573 -573
- package/prompts/mobile/flow-build-phase-3.md +782 -782
- package/prompts/mobile/flow-build-phase-4.md +554 -554
- package/prompts/mobile/flow-build-phase-5.md +703 -703
- package/prompts/mobile/flow-build-phase-6.md +524 -524
- package/prompts/mobile/flow-build-phase-7.md +1001 -1001
- package/prompts/mobile/flow-build-phase-8.md +888 -888
- package/prompts/mobile/flow-build-phase-9.md +90 -90
- package/prompts/mobile/flow-build.md +135 -135
- package/prompts/mobile/flow-check-review.md +656 -20
- package/prompts/mobile/flow-check-test.md +526 -14
- package/prompts/mobile/flow-check.md +725 -67
- package/prompts/mobile/flow-commit.md +88 -119
- package/prompts/mobile/flow-docs-sync.md +620 -620
- package/prompts/mobile/flow-finish.md +910 -0
- package/prompts/mobile/flow-release.md +751 -0
- package/prompts/mobile/flow-work-api.md +1493 -0
- package/prompts/mobile/flow-work-feature.md +61 -61
- package/prompts/mobile/flow-work-fix.md +46 -46
- package/prompts/mobile/flow-work-refactor.md +48 -48
- package/prompts/mobile/flow-work-resume.md +34 -34
- package/prompts/mobile/flow-work.md +1593 -1329
- package/prompts/shared/mermaid-guidelines.md +102 -102
- package/prompts/shared/scope-levels.md +114 -114
- package/prompts/shared/smart-skip-preflight.md +214 -214
- package/prompts/shared/story-points.md +55 -55
- package/prompts/shared/task-format.md +74 -74
- package/prompts/shared/task-summary-template.md +277 -277
- package/templates/AGENT.template.md +443 -443
- package/templates/backend/.clauderules.template +112 -112
- package/templates/backend/.cursorrules.template +102 -102
- package/templates/backend/README.template.md +2 -2
- package/templates/backend/ai-instructions.template.md +2 -2
- package/templates/backend/copilot-instructions.template.md +2 -2
- package/templates/backend/docs/api.template.md +320 -320
- package/templates/backend/docs/business-flows.template.md +97 -97
- package/templates/backend/docs/code-standards.template.md +2 -2
- package/templates/backend/docs/contributing.template.md +3 -3
- package/templates/backend/docs/data-model.template.md +520 -520
- package/templates/backend/docs/testing.template.md +2 -2
- package/templates/backend/project-brief.template.md +2 -2
- package/templates/backend/specs/configuration.template.md +2 -2
- package/templates/backend/specs/security.template.md +2 -2
- package/templates/desktop/.clauderules.template +112 -112
- package/templates/desktop/.cursorrules.template +102 -102
- package/templates/desktop/README.template.md +170 -170
- package/templates/desktop/ai-instructions.template.md +366 -366
- package/templates/desktop/copilot-instructions.template.md +140 -140
- package/templates/desktop/docs/docs/api.template.md +320 -320
- package/templates/desktop/docs/docs/architecture.template.md +724 -724
- package/templates/desktop/docs/docs/business-flows.template.md +102 -102
- package/templates/desktop/docs/docs/code-standards.template.md +792 -792
- package/templates/desktop/docs/docs/contributing.template.md +149 -149
- package/templates/desktop/docs/docs/data-model.template.md +520 -520
- package/templates/desktop/docs/docs/operations.template.md +720 -720
- package/templates/desktop/docs/docs/testing.template.md +722 -722
- package/templates/desktop/project-brief.template.md +150 -150
- package/templates/desktop/specs/specs/configuration.template.md +121 -121
- package/templates/desktop/specs/specs/security.template.md +392 -392
- package/templates/frontend/README.template.md +2 -2
- package/templates/frontend/ai-instructions.template.md +2 -2
- package/templates/frontend/docs/api-integration.template.md +362 -362
- package/templates/frontend/docs/components.template.md +2 -2
- package/templates/frontend/docs/error-handling.template.md +360 -360
- package/templates/frontend/docs/operations.template.md +107 -107
- package/templates/frontend/docs/performance.template.md +124 -124
- package/templates/frontend/docs/pwa.template.md +119 -119
- package/templates/frontend/docs/state-management.template.md +2 -2
- package/templates/frontend/docs/styling.template.md +2 -2
- package/templates/frontend/docs/testing.template.md +2 -2
- package/templates/frontend/project-brief.template.md +2 -2
- package/templates/frontend/specs/accessibility.template.md +95 -95
- package/templates/frontend/specs/configuration.template.md +2 -2
- package/templates/frontend/specs/security.template.md +175 -175
- package/templates/fullstack/README.template.md +252 -252
- package/templates/fullstack/ai-instructions.template.md +444 -444
- package/templates/fullstack/project-brief.template.md +157 -157
- package/templates/fullstack/specs/configuration.template.md +340 -340
- package/templates/mobile/README.template.md +167 -167
- package/templates/mobile/ai-instructions.template.md +196 -196
- package/templates/mobile/docs/app-store.template.md +135 -135
- package/templates/mobile/docs/architecture.template.md +63 -63
- package/templates/mobile/docs/native-features.template.md +94 -94
- package/templates/mobile/docs/navigation.template.md +59 -59
- package/templates/mobile/docs/offline-strategy.template.md +65 -65
- package/templates/mobile/docs/permissions.template.md +56 -56
- package/templates/mobile/docs/state-management.template.md +85 -85
- package/templates/mobile/docs/testing.template.md +109 -109
- package/templates/mobile/project-brief.template.md +69 -69
- package/templates/mobile/specs/build-configuration.template.md +91 -91
- package/templates/mobile/specs/deployment.template.md +92 -92
- package/templates/work.template.md +47 -47
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
# Operations & Deployment
|
|
2
|
-
|
|
3
|
-
> Deployment procedures and operational guidelines for {{PROJECT_NAME}}
|
|
1
|
+
# Operations & Deployment
|
|
2
|
+
|
|
3
|
+
> Deployment procedures and operational guidelines for {{PROJECT_NAME}}
|
|
4
4
|
---
|
|
5
|
-
## 🚀 Deployment Platform
|
|
6
|
-
|
|
7
|
-
**Platform:** {{DEPLOYMENT_PLATFORM}}
|
|
8
|
-
**CI/CD:** {{CI_CD_PLATFORM}}
|
|
9
|
-
**Environments:** {{ENVIRONMENTS}}
|
|
5
|
+
## 🚀 Deployment Platform
|
|
6
|
+
|
|
7
|
+
**Platform:** {{DEPLOYMENT_PLATFORM}}
|
|
8
|
+
**CI/CD:** {{CI_CD_PLATFORM}}
|
|
9
|
+
**Environments:** {{ENVIRONMENTS}}
|
|
10
10
|
---
|
|
11
|
-
## 📦 Build Process
|
|
12
|
-
|
|
13
|
-
### Production Build
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
# Build for production
|
|
17
|
-
npm run build
|
|
18
|
-
|
|
19
|
-
# Output directory
|
|
20
|
-
dist/
|
|
21
|
-
├── index.html
|
|
22
|
-
├── assets/
|
|
23
|
-
│ ├── app-[hash].js
|
|
24
|
-
│ ├── app-[hash].css
|
|
25
|
-
│ └── images/
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Environment Variables
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# .env.production
|
|
32
|
-
VITE_API_BASE_URL=https://api.example.com
|
|
33
|
-
VITE_APP_ENV=production
|
|
34
|
-
```
|
|
11
|
+
## 📦 Build Process
|
|
12
|
+
|
|
13
|
+
### Production Build
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Build for production
|
|
17
|
+
npm run build
|
|
18
|
+
|
|
19
|
+
# Output directory
|
|
20
|
+
dist/
|
|
21
|
+
├── index.html
|
|
22
|
+
├── assets/
|
|
23
|
+
│ ├── app-[hash].js
|
|
24
|
+
│ ├── app-[hash].css
|
|
25
|
+
│ └── images/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Environment Variables
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# .env.production
|
|
32
|
+
VITE_API_BASE_URL=https://api.example.com
|
|
33
|
+
VITE_APP_ENV=production
|
|
34
|
+
```
|
|
35
35
|
---
|
|
36
|
-
## 🔄 CI/CD Pipeline
|
|
37
|
-
|
|
38
|
-
### GitHub Actions Example
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
# .github/workflows/deploy.yml
|
|
42
|
-
name: Deploy
|
|
43
|
-
|
|
44
|
-
on:
|
|
45
|
-
push:
|
|
46
|
-
branches: [main]
|
|
47
|
-
|
|
48
|
-
jobs:
|
|
49
|
-
deploy:
|
|
50
|
-
runs-on: ubuntu-latest
|
|
51
|
-
steps:
|
|
52
|
-
- uses: actions/checkout@v3
|
|
53
|
-
- uses: actions/setup-node@v3
|
|
54
|
-
with:
|
|
55
|
-
node-version: 18
|
|
56
|
-
- run: npm ci
|
|
57
|
-
- run: npm run lint
|
|
58
|
-
- run: npm run test
|
|
59
|
-
- run: npm run build
|
|
60
|
-
- uses: vercel/action@v1
|
|
61
|
-
with:
|
|
62
|
-
vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
63
|
-
```
|
|
36
|
+
## 🔄 CI/CD Pipeline
|
|
37
|
+
|
|
38
|
+
### GitHub Actions Example
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
# .github/workflows/deploy.yml
|
|
42
|
+
name: Deploy
|
|
43
|
+
|
|
44
|
+
on:
|
|
45
|
+
push:
|
|
46
|
+
branches: [main]
|
|
47
|
+
|
|
48
|
+
jobs:
|
|
49
|
+
deploy:
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v3
|
|
53
|
+
- uses: actions/setup-node@v3
|
|
54
|
+
with:
|
|
55
|
+
node-version: 18
|
|
56
|
+
- run: npm ci
|
|
57
|
+
- run: npm run lint
|
|
58
|
+
- run: npm run test
|
|
59
|
+
- run: npm run build
|
|
60
|
+
- uses: vercel/action@v1
|
|
61
|
+
with:
|
|
62
|
+
vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
63
|
+
```
|
|
64
64
|
---
|
|
65
|
-
## 📊 Monitoring
|
|
66
|
-
|
|
67
|
-
### Error Tracking
|
|
68
|
-
|
|
69
|
-
**Tool:** {{ERROR_TRACKING_TOOL}}
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
// Sentry setup
|
|
73
|
-
import * as Sentry from '@sentry/react';
|
|
74
|
-
|
|
75
|
-
Sentry.init({
|
|
76
|
-
dsn: import.meta.env.VITE_SENTRY_DSN,
|
|
77
|
-
environment: import.meta.env.VITE_APP_ENV,
|
|
78
|
-
});
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Analytics
|
|
82
|
-
|
|
83
|
-
**Tool:** {{ANALYTICS_TOOL}}
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
// Google Analytics
|
|
87
|
-
gtag('config', 'GA_MEASUREMENT_ID');
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Performance Monitoring
|
|
91
|
-
|
|
92
|
-
**Tool:** {{PERFORMANCE_MONITORING_TOOL}}
|
|
93
|
-
|
|
94
|
-
```typescript
|
|
95
|
-
// Web Vitals
|
|
96
|
-
import { onCLS, onFID, onLCP } from 'web-vitals';
|
|
97
|
-
|
|
98
|
-
onCLS(console.log);
|
|
99
|
-
onFID(console.log);
|
|
100
|
-
onLCP(console.log);
|
|
101
|
-
```
|
|
65
|
+
## 📊 Monitoring
|
|
66
|
+
|
|
67
|
+
### Error Tracking
|
|
68
|
+
|
|
69
|
+
**Tool:** {{ERROR_TRACKING_TOOL}}
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// Sentry setup
|
|
73
|
+
import * as Sentry from '@sentry/react';
|
|
74
|
+
|
|
75
|
+
Sentry.init({
|
|
76
|
+
dsn: import.meta.env.VITE_SENTRY_DSN,
|
|
77
|
+
environment: import.meta.env.VITE_APP_ENV,
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Analytics
|
|
82
|
+
|
|
83
|
+
**Tool:** {{ANALYTICS_TOOL}}
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// Google Analytics
|
|
87
|
+
gtag('config', 'GA_MEASUREMENT_ID');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Performance Monitoring
|
|
91
|
+
|
|
92
|
+
**Tool:** {{PERFORMANCE_MONITORING_TOOL}}
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// Web Vitals
|
|
96
|
+
import { onCLS, onFID, onLCP } from 'web-vitals';
|
|
97
|
+
|
|
98
|
+
onCLS(console.log);
|
|
99
|
+
onFID(console.log);
|
|
100
|
+
onLCP(console.log);
|
|
101
|
+
```
|
|
102
102
|
---
|
|
103
|
-
## 🔗 Related Documents
|
|
104
|
-
|
|
105
|
-
- [Performance](performance.md) - Performance optimization
|
|
106
|
-
- [Configuration](../specs/configuration.md) - Environment configuration
|
|
103
|
+
## 🔗 Related Documents
|
|
104
|
+
|
|
105
|
+
- [Performance](performance.md) - Performance optimization
|
|
106
|
+
- [Configuration](../specs/configuration.md) - Environment configuration
|
|
107
107
|
---
|
|
108
|
-
**Last Updated:** {{GENERATION_DATE}}
|
|
109
|
-
|
|
110
|
-
**Deployment Platform:** {{DEPLOYMENT_PLATFORM}}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
**Last Updated:** {{GENERATION_DATE}}
|
|
109
|
+
|
|
110
|
+
**Deployment Platform:** {{DEPLOYMENT_PLATFORM}}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
# Performance Optimization
|
|
2
|
-
|
|
3
|
-
> Performance optimization strategies and best practices for {{PROJECT_NAME}}
|
|
1
|
+
# Performance Optimization
|
|
2
|
+
|
|
3
|
+
> Performance optimization strategies and best practices for {{PROJECT_NAME}}
|
|
4
4
|
---
|
|
5
|
-
## 🎯 Performance Targets
|
|
6
|
-
|
|
7
|
-
**Core Web Vitals:**
|
|
8
|
-
- **LCP:** < {{LCP_TARGET}}s
|
|
9
|
-
- **FID/INP:** < {{FID_TARGET}}ms
|
|
10
|
-
- **CLS:** < {{CLS_TARGET}}
|
|
11
|
-
|
|
12
|
-
**Bundle Size:** < {{BUNDLE_SIZE_TARGET}}KB (gzipped)
|
|
5
|
+
## 🎯 Performance Targets
|
|
6
|
+
|
|
7
|
+
**Core Web Vitals:**
|
|
8
|
+
- **LCP:** < {{LCP_TARGET}}s
|
|
9
|
+
- **FID/INP:** < {{FID_TARGET}}ms
|
|
10
|
+
- **CLS:** < {{CLS_TARGET}}
|
|
11
|
+
|
|
12
|
+
**Bundle Size:** < {{BUNDLE_SIZE_TARGET}}KB (gzipped)
|
|
13
13
|
---
|
|
14
|
-
## 📦 Bundle Optimization
|
|
15
|
-
|
|
16
|
-
### Code Splitting
|
|
17
|
-
|
|
18
|
-
```typescript
|
|
19
|
-
// Route-based splitting
|
|
20
|
-
const Dashboard = lazy(() => import('./pages/Dashboard'));
|
|
21
|
-
const Profile = lazy(() => import('./pages/Profile'));
|
|
22
|
-
|
|
23
|
-
// Component-based splitting
|
|
24
|
-
const HeavyChart = lazy(() => import('./components/HeavyChart'));
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Tree Shaking
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
// ✅ Good - Tree shakeable
|
|
31
|
-
import { debounce } from 'lodash-es';
|
|
32
|
-
|
|
33
|
-
// ❌ Bad - Imports entire library
|
|
34
|
-
import _ from 'lodash';
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Bundle Analysis
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Analyze bundle size
|
|
41
|
-
npm run build -- --analyze
|
|
42
|
-
|
|
43
|
-
# Check bundle size in CI
|
|
44
|
-
npm run build && du -sh dist/*
|
|
45
|
-
```
|
|
14
|
+
## 📦 Bundle Optimization
|
|
15
|
+
|
|
16
|
+
### Code Splitting
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// Route-based splitting
|
|
20
|
+
const Dashboard = lazy(() => import('./pages/Dashboard'));
|
|
21
|
+
const Profile = lazy(() => import('./pages/Profile'));
|
|
22
|
+
|
|
23
|
+
// Component-based splitting
|
|
24
|
+
const HeavyChart = lazy(() => import('./components/HeavyChart'));
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Tree Shaking
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// ✅ Good - Tree shakeable
|
|
31
|
+
import { debounce } from 'lodash-es';
|
|
32
|
+
|
|
33
|
+
// ❌ Bad - Imports entire library
|
|
34
|
+
import _ from 'lodash';
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Bundle Analysis
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Analyze bundle size
|
|
41
|
+
npm run build -- --analyze
|
|
42
|
+
|
|
43
|
+
# Check bundle size in CI
|
|
44
|
+
npm run build && du -sh dist/*
|
|
45
|
+
```
|
|
46
46
|
---
|
|
47
|
-
## 🖼️ Image Optimization
|
|
48
|
-
|
|
49
|
-
### Next-gen Formats
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
// Use WebP/AVIF with fallback
|
|
53
|
-
<picture>
|
|
54
|
-
<source srcset="image.avif" type="image/avif" />
|
|
55
|
-
<source srcset="image.webp" type="image/webp" />
|
|
56
|
-
<img src="image.jpg" alt="Description" />
|
|
57
|
-
</picture>
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Lazy Loading
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
// Native lazy loading
|
|
64
|
-
<img src="image.jpg" loading="lazy" alt="Description" />
|
|
65
|
-
|
|
66
|
-
// Intersection Observer
|
|
67
|
-
const observer = new IntersectionObserver((entries) => {
|
|
68
|
-
entries.forEach(entry => {
|
|
69
|
-
if (entry.isIntersecting) {
|
|
70
|
-
entry.target.src = entry.target.dataset.src;
|
|
71
|
-
observer.unobserve(entry.target);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
```
|
|
47
|
+
## 🖼️ Image Optimization
|
|
48
|
+
|
|
49
|
+
### Next-gen Formats
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// Use WebP/AVIF with fallback
|
|
53
|
+
<picture>
|
|
54
|
+
<source srcset="image.avif" type="image/avif" />
|
|
55
|
+
<source srcset="image.webp" type="image/webp" />
|
|
56
|
+
<img src="image.jpg" alt="Description" />
|
|
57
|
+
</picture>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Lazy Loading
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// Native lazy loading
|
|
64
|
+
<img src="image.jpg" loading="lazy" alt="Description" />
|
|
65
|
+
|
|
66
|
+
// Intersection Observer
|
|
67
|
+
const observer = new IntersectionObserver((entries) => {
|
|
68
|
+
entries.forEach(entry => {
|
|
69
|
+
if (entry.isIntersecting) {
|
|
70
|
+
entry.target.src = entry.target.dataset.src;
|
|
71
|
+
observer.unobserve(entry.target);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
76
|
---
|
|
77
|
-
## ⚡ Performance Monitoring
|
|
78
|
-
|
|
79
|
-
### Core Web Vitals Tracking
|
|
80
|
-
|
|
81
|
-
```typescript
|
|
82
|
-
// utils/webVitals.ts
|
|
83
|
-
import { onCLS, onFID, onLCP } from 'web-vitals';
|
|
84
|
-
|
|
85
|
-
function sendToAnalytics(metric: Metric) {
|
|
86
|
-
// Send to analytics service
|
|
87
|
-
gtag('event', metric.name, {
|
|
88
|
-
value: Math.round(metric.value),
|
|
89
|
-
event_label: metric.id,
|
|
90
|
-
non_interaction: true,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
onCLS(sendToAnalytics);
|
|
95
|
-
onFID(sendToAnalytics);
|
|
96
|
-
onLCP(sendToAnalytics);
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Performance Budgets
|
|
100
|
-
|
|
101
|
-
```javascript
|
|
102
|
-
// .lighthouserc.js
|
|
103
|
-
module.exports = {
|
|
104
|
-
ci: {
|
|
105
|
-
collect: {
|
|
106
|
-
numberOfRuns: 3,
|
|
107
|
-
},
|
|
108
|
-
assert: {
|
|
109
|
-
assertions: {
|
|
110
|
-
'categories:performance': ['error', { minScore: 0.9 }],
|
|
111
|
-
'first-contentful-paint': ['error', { maxNumericValue: 2000 }],
|
|
112
|
-
'largest-contentful-paint': ['error', { maxNumericValue: 2500 }],
|
|
113
|
-
'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
};
|
|
118
|
-
```
|
|
77
|
+
## ⚡ Performance Monitoring
|
|
78
|
+
|
|
79
|
+
### Core Web Vitals Tracking
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// utils/webVitals.ts
|
|
83
|
+
import { onCLS, onFID, onLCP } from 'web-vitals';
|
|
84
|
+
|
|
85
|
+
function sendToAnalytics(metric: Metric) {
|
|
86
|
+
// Send to analytics service
|
|
87
|
+
gtag('event', metric.name, {
|
|
88
|
+
value: Math.round(metric.value),
|
|
89
|
+
event_label: metric.id,
|
|
90
|
+
non_interaction: true,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
onCLS(sendToAnalytics);
|
|
95
|
+
onFID(sendToAnalytics);
|
|
96
|
+
onLCP(sendToAnalytics);
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Performance Budgets
|
|
100
|
+
|
|
101
|
+
```javascript
|
|
102
|
+
// .lighthouserc.js
|
|
103
|
+
module.exports = {
|
|
104
|
+
ci: {
|
|
105
|
+
collect: {
|
|
106
|
+
numberOfRuns: 3,
|
|
107
|
+
},
|
|
108
|
+
assert: {
|
|
109
|
+
assertions: {
|
|
110
|
+
'categories:performance': ['error', { minScore: 0.9 }],
|
|
111
|
+
'first-contentful-paint': ['error', { maxNumericValue: 2000 }],
|
|
112
|
+
'largest-contentful-paint': ['error', { maxNumericValue: 2500 }],
|
|
113
|
+
'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
```
|
|
119
119
|
---
|
|
120
|
-
## 🔗 Related Documents
|
|
121
|
-
|
|
122
|
-
- [Operations](operations.md) - Performance monitoring setup
|
|
123
|
-
- [Build Configuration](../specs/configuration.md) - Build optimization
|
|
120
|
+
## 🔗 Related Documents
|
|
121
|
+
|
|
122
|
+
- [Operations](operations.md) - Performance monitoring setup
|
|
123
|
+
- [Build Configuration](../specs/configuration.md) - Build optimization
|
|
124
124
|
---
|
|
125
|
-
**Last Updated:** {{GENERATION_DATE}}
|
|
126
|
-
|
|
127
|
-
**Performance Targets:** LCP < {{LCP_TARGET}}s, FID < {{FID_TARGET}}ms, CLS < {{CLS_TARGET}}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
**Last Updated:** {{GENERATION_DATE}}
|
|
126
|
+
|
|
127
|
+
**Performance Targets:** LCP < {{LCP_TARGET}}s, FID < {{FID_TARGET}}ms, CLS < {{CLS_TARGET}}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|