@tamyla/clodo-framework 1.0.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/CHANGELOG.md +564 -0
- package/LICENSE +21 -0
- package/README.md +1393 -0
- package/bin/README.md +71 -0
- package/bin/clodo-service.js +416 -0
- package/bin/security/security-cli.js +96 -0
- package/bin/service-management/README.md +74 -0
- package/bin/service-management/create-service.js +129 -0
- package/bin/service-management/init-service.js +102 -0
- package/bin/service-management/init-service.js.backup +889 -0
- package/bin/shared/config/customer-cli.js +293 -0
- package/dist/config/ConfigurationManager.js +159 -0
- package/dist/config/CustomerConfigCLI.js +220 -0
- package/dist/config/FeatureManager.js +426 -0
- package/dist/config/customers.js +441 -0
- package/dist/config/domains.js +180 -0
- package/dist/config/features.js +225 -0
- package/dist/config/index.js +6 -0
- package/dist/database/database-orchestrator.js +730 -0
- package/dist/database/index.js +4 -0
- package/dist/deployment/auditor.js +971 -0
- package/dist/deployment/index.js +10 -0
- package/dist/deployment/rollback-manager.js +523 -0
- package/dist/deployment/testers/api-tester.js +80 -0
- package/dist/deployment/testers/auth-tester.js +129 -0
- package/dist/deployment/testers/core.js +217 -0
- package/dist/deployment/testers/database-tester.js +105 -0
- package/dist/deployment/testers/index.js +74 -0
- package/dist/deployment/testers/load-tester.js +120 -0
- package/dist/deployment/testers/performance-tester.js +105 -0
- package/dist/deployment/validator.js +558 -0
- package/dist/deployment/wrangler-deployer.js +574 -0
- package/dist/handlers/GenericRouteHandler.js +532 -0
- package/dist/index.js +39 -0
- package/dist/migration/MigrationAdapters.js +562 -0
- package/dist/modules/ModuleManager.js +668 -0
- package/dist/modules/security.js +98 -0
- package/dist/orchestration/cross-domain-coordinator.js +1083 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/modules/DeploymentCoordinator.js +258 -0
- package/dist/orchestration/modules/DomainResolver.js +196 -0
- package/dist/orchestration/modules/StateManager.js +332 -0
- package/dist/orchestration/multi-domain-orchestrator.js +255 -0
- package/dist/routing/EnhancedRouter.js +158 -0
- package/dist/schema/SchemaManager.js +778 -0
- package/dist/security/ConfigurationValidator.js +490 -0
- package/dist/security/DeploymentManager.js +208 -0
- package/dist/security/SecretGenerator.js +142 -0
- package/dist/security/SecurityCLI.js +228 -0
- package/dist/security/index.js +51 -0
- package/dist/security/patterns/environment-rules.js +66 -0
- package/dist/security/patterns/insecure-patterns.js +21 -0
- package/dist/service-management/ConfirmationEngine.js +411 -0
- package/dist/service-management/ErrorTracker.js +294 -0
- package/dist/service-management/GenerationEngine.js +3109 -0
- package/dist/service-management/InputCollector.js +237 -0
- package/dist/service-management/ServiceCreator.js +229 -0
- package/dist/service-management/ServiceInitializer.js +448 -0
- package/dist/service-management/ServiceOrchestrator.js +638 -0
- package/dist/service-management/handlers/ConfigMutator.js +130 -0
- package/dist/service-management/handlers/ConfirmationHandler.js +71 -0
- package/dist/service-management/handlers/GenerationHandler.js +80 -0
- package/dist/service-management/handlers/InputHandler.js +59 -0
- package/dist/service-management/handlers/ValidationHandler.js +203 -0
- package/dist/service-management/index.js +7 -0
- package/dist/services/GenericDataService.js +488 -0
- package/dist/shared/cloudflare/domain-discovery.js +562 -0
- package/dist/shared/cloudflare/domain-manager.js +912 -0
- package/dist/shared/cloudflare/index.js +8 -0
- package/dist/shared/cloudflare/ops.js +387 -0
- package/dist/shared/config/cache.js +1167 -0
- package/dist/shared/config/command-config-manager.js +174 -0
- package/dist/shared/config/customer-cli.js +258 -0
- package/dist/shared/config/index.js +9 -0
- package/dist/shared/config/manager.js +289 -0
- package/dist/shared/database/connection-manager.js +338 -0
- package/dist/shared/database/index.js +7 -0
- package/dist/shared/database/orchestrator.js +632 -0
- package/dist/shared/deployment/auditor.js +971 -0
- package/dist/shared/deployment/index.js +10 -0
- package/dist/shared/deployment/rollback-manager.js +523 -0
- package/dist/shared/deployment/validator.js +558 -0
- package/dist/shared/index.js +32 -0
- package/dist/shared/monitoring/health-checker.js +250 -0
- package/dist/shared/monitoring/index.js +8 -0
- package/dist/shared/monitoring/memory-manager.js +382 -0
- package/dist/shared/monitoring/production-monitor.js +390 -0
- package/dist/shared/production-tester/api-tester.js +80 -0
- package/dist/shared/production-tester/auth-tester.js +129 -0
- package/dist/shared/production-tester/core.js +217 -0
- package/dist/shared/production-tester/database-tester.js +105 -0
- package/dist/shared/production-tester/index.js +74 -0
- package/dist/shared/production-tester/load-tester.js +120 -0
- package/dist/shared/production-tester/performance-tester.js +105 -0
- package/dist/shared/security/api-token-manager.js +296 -0
- package/dist/shared/security/index.js +8 -0
- package/dist/shared/security/secret-generator.js +918 -0
- package/dist/shared/security/secure-token-manager.js +379 -0
- package/dist/shared/utils/error-recovery.js +240 -0
- package/dist/shared/utils/graceful-shutdown-manager.js +380 -0
- package/dist/shared/utils/index.js +9 -0
- package/dist/shared/utils/interactive-prompts.js +134 -0
- package/dist/shared/utils/rate-limiter.js +249 -0
- package/dist/utils/ErrorHandler.js +173 -0
- package/dist/utils/deployment/config-cache.js +1160 -0
- package/dist/utils/deployment/index.js +6 -0
- package/dist/utils/deployment/interactive-prompts.js +97 -0
- package/dist/utils/deployment/secret-generator.js +896 -0
- package/dist/utils/dirname-helper.js +35 -0
- package/dist/utils/domain-config.js +159 -0
- package/dist/utils/error-recovery.js +240 -0
- package/dist/utils/esm-helper.js +52 -0
- package/dist/utils/framework-config.js +481 -0
- package/dist/utils/graceful-shutdown-manager.js +379 -0
- package/dist/utils/health-checker.js +114 -0
- package/dist/utils/index.js +36 -0
- package/dist/utils/prompt-handler.js +98 -0
- package/dist/utils/usage-tracker.js +252 -0
- package/dist/utils/validation.js +112 -0
- package/dist/version/VersionDetector.js +723 -0
- package/dist/worker/index.js +4 -0
- package/dist/worker/integration.js +332 -0
- package/docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md +206 -0
- package/docs/INTEGRATION_GUIDE.md +2045 -0
- package/docs/README.md +82 -0
- package/docs/SECURITY.md +242 -0
- package/docs/deployment/deployment-guide.md +540 -0
- package/docs/overview.md +280 -0
- package/package.json +176 -0
- package/types/index.d.ts +575 -0
package/README.md
ADDED
|
@@ -0,0 +1,1393 @@
|
|
|
1
|
+
# Clodo Framework
|
|
2
|
+
|
|
3
|
+
A comprehensive framework for building enterprise-grade software architecture on Cloudflare Workers + D1. This framework enables rapid development of autonomous, domain-specific services while maintaining consistency and reusability across your entire ecosystem.
|
|
4
|
+
|
|
5
|
+
> **Note**: This framework serves as both a development environment for understanding deployment workflows and a source of reusable components for service codebases. The ultimate goal is to embed these capabilities into individual service repositories for autonomous deployment.
|
|
6
|
+
|
|
7
|
+
## Philosophy
|
|
8
|
+
|
|
9
|
+
Just like Clodo bricks snap together to build anything you can imagine, this framework provides the base components that your services snap into. Focus on your business logic while the framework handles the infrastructure, configuration, and deployment patterns.
|
|
10
|
+
|
|
11
|
+
## � Incremental Adoption
|
|
12
|
+
|
|
13
|
+
Already have an existing project? The Clodo Framework is designed for **gradual integration** - you don't need to rewrite everything at once. Start with individual components and scale up as needed.
|
|
14
|
+
|
|
15
|
+
### **Quick Start Options**
|
|
16
|
+
- **Greenfield Development**: Use `npx @tamyla/clodo-framework clodo-service` for new projects
|
|
17
|
+
- **Existing Projects**: Import individual utilities, then add configuration management, then full deployment automation
|
|
18
|
+
- **Migration Path**: Follow our [Integration Guide](./docs/INTEGRATION_GUIDE.md) for step-by-step migration strategies
|
|
19
|
+
|
|
20
|
+
### **Adoption Phases**
|
|
21
|
+
1. **Phase 1**: Import core utilities (logging, validation, error handling)
|
|
22
|
+
2. **Phase 2**: Add configuration management and environment handling
|
|
23
|
+
3. **Phase 3**: Integrate deployment automation and security validation
|
|
24
|
+
4. **Phase 4**: Full framework adoption with orchestration and monitoring
|
|
25
|
+
|
|
26
|
+
> **Pro Tip**: Most teams start with Phase 1 utilities and gradually adopt more features. See [Adopting Clodo Framework in Existing Projects](./docs/INTEGRATION_GUIDE.md#incremental-adoption) for detailed guidance.
|
|
27
|
+
|
|
28
|
+
## �🔒 Security-First Architecture
|
|
29
|
+
|
|
30
|
+
The Clodo Framework implements **security-by-default** principles, ensuring that insecure configurations cannot reach production environments. Our comprehensive security validation framework automatically detects and prevents:
|
|
31
|
+
|
|
32
|
+
- **Dummy API Keys**: Prevents deployment of development/test keys to production
|
|
33
|
+
- **Weak Secrets**: Blocks passwords shorter than security requirements
|
|
34
|
+
- **Insecure URLs**: Enforces HTTPS in production, blocks localhost in live environments
|
|
35
|
+
- **JWT Security**: Validates JWT secret strength and entropy
|
|
36
|
+
- **Environment Compliance**: Different security rules for dev/staging/production
|
|
37
|
+
|
|
38
|
+
### Security Integration
|
|
39
|
+
|
|
40
|
+
Security validation is **automatically applied** to all deployments through framework hooks:
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
// Security validation runs automatically on every deployment
|
|
44
|
+
hooks: {
|
|
45
|
+
'pre-deployment': async (context) => {
|
|
46
|
+
const issues = ConfigurationValidator.validate(config, environment);
|
|
47
|
+
if (criticalIssues.length > 0) {
|
|
48
|
+
throw new Error('🚫 Deployment blocked due to critical security issues');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Quick Security Setup
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Generate secure keys
|
|
58
|
+
npx @tamyla/clodo-framework security generate-key jwt
|
|
59
|
+
npx @tamyla/clodo-framework security generate-key api content-skimmer
|
|
60
|
+
|
|
61
|
+
# Validate configuration security
|
|
62
|
+
npx @tamyla/clodo-framework security validate customer production
|
|
63
|
+
|
|
64
|
+
# Deploy with automatic security validation
|
|
65
|
+
npx @tamyla/clodo-framework security deploy customer production
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Current Status ✅
|
|
69
|
+
|
|
70
|
+
### **Working Features**
|
|
71
|
+
- ✅ **Interactive Domain Selection**: Choose domains from discovered services
|
|
72
|
+
- ✅ **Real Cloudflare Worker Deployment**: Actual wrangler-based deployment
|
|
73
|
+
- ✅ **Domain Discovery & Validation**: Comprehensive Cloudflare integration
|
|
74
|
+
- ✅ **API Token Management**: Secure encrypted storage and validation
|
|
75
|
+
- ✅ **Service Directory Intelligence**: Smart service discovery by domain configuration
|
|
76
|
+
- ✅ **Production Testing Suite**: Comprehensive post-deployment validation
|
|
77
|
+
- ✅ **Deployment Auditing**: Complete audit trails and logging
|
|
78
|
+
- ✅ **Graceful Error Handling**: D1 permission graceful degradation
|
|
79
|
+
- ✅ **Cross-Platform Support**: Windows PowerShell and Linux compatibility
|
|
80
|
+
- ✅ **🔒 Security Validation Framework**: Automated security validation and deployment blocking
|
|
81
|
+
- ✅ **🛡️ Cryptographic Key Generation**: Secure API key and JWT secret generation
|
|
82
|
+
- ✅ **🚫 Deployment Security**: Pre-deployment validation that blocks insecure configurations
|
|
83
|
+
- ✅ **👥 Customer Configuration Management**: Multi-environment, multi-customer configuration system
|
|
84
|
+
- ✅ **🏗️ Template-Based Customer Onboarding**: Automated customer setup from reusable templates
|
|
85
|
+
- ✅ **🔗 Framework Integration**: Customer configs integrate with domain and feature flag systems
|
|
86
|
+
- ✅ **📘 TypeScript Support**: Comprehensive type definitions with 500+ lines of TypeScript interfaces
|
|
87
|
+
- ✅ **⚡ Performance Caching**: Schema caching, SQL query caching, and validation result caching
|
|
88
|
+
- ✅ **🔄 Enhanced Data Services**: Advanced pagination, relationship loading, and query optimization
|
|
89
|
+
|
|
90
|
+
### **Core Capabilities**
|
|
91
|
+
- **Enterprise Deployment System**: Multi-domain deployment orchestration with validation
|
|
92
|
+
- **Domain Configuration Management**: Centralized configuration with runtime discovery
|
|
93
|
+
- **API Token Security**: AES-256-CBC encrypted storage with automatic prompting
|
|
94
|
+
- **Service Autonomy**: Each service can discover and deploy itself independently
|
|
95
|
+
- **Comprehensive Validation**: Network, authentication, configuration, and endpoint validation
|
|
96
|
+
- **🔒 Security-by-Default**: Automatic detection and prevention of insecure configurations
|
|
97
|
+
- **🛡️ Production Security**: Environment-specific security requirements and validation
|
|
98
|
+
- **🔐 Cryptographic Utilities**: Secure key generation and secret management
|
|
99
|
+
- **Production Testing**: Health checks, authentication flows, performance monitoring
|
|
100
|
+
- **Audit & Compliance**: Detailed deployment logging and reporting
|
|
101
|
+
- **👥 Customer Configuration Management**: Multi-environment customer isolation and management
|
|
102
|
+
- **🏗️ Template-Based Onboarding**: Automated customer setup with reusable configuration templates
|
|
103
|
+
- **🔗 Framework Integration**: Seamless integration with existing domain and feature flag systems
|
|
104
|
+
- **📘 TypeScript First**: Complete type safety with comprehensive type definitions and IDE support
|
|
105
|
+
- **⚡ Performance Optimized**: Intelligent caching system for schemas, SQL queries, and validation results
|
|
106
|
+
- **🔄 Advanced Data Operations**: Enhanced CRUD with relationships, advanced pagination, and query optimization
|
|
107
|
+
|
|
108
|
+
## 🧪 Downstream Service Testing & Validation
|
|
109
|
+
|
|
110
|
+
The CLODO Framework provides comprehensive capabilities for testing, validating, and deploying Cloudflare Workers in downstream environments - perfect for ensuring services work correctly in third-party accounts and production environments.
|
|
111
|
+
|
|
112
|
+
### **Production Testing Suite** 🧪
|
|
113
|
+
Test deployed services across any Cloudflare account:
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
import { ProductionTester } from '@tamyla/clodo-framework/deployment';
|
|
117
|
+
|
|
118
|
+
const tester = new ProductionTester({
|
|
119
|
+
verbose: true,
|
|
120
|
+
generateReport: true
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Test service in any environment
|
|
124
|
+
const results = await tester.runProductionTests('https://your-service.workers.dev', {
|
|
125
|
+
testSuites: ['health', 'authentication', 'database', 'performance']
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Available Test Suites:**
|
|
130
|
+
- **Health Checks**: Endpoint availability and response validation
|
|
131
|
+
- **Authentication**: JWT tokens, API keys, session management
|
|
132
|
+
- **Database**: D1 connectivity, query execution, transactions
|
|
133
|
+
- **Performance**: Response times, throughput, resource monitoring
|
|
134
|
+
- **Regression**: Compare against baseline metrics
|
|
135
|
+
|
|
136
|
+
### **Modular Testing Capabilities** 🔧
|
|
137
|
+
For granular control, use individual testing modules:
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
// Test only what you need
|
|
141
|
+
import { ApiTester, AuthTester, DatabaseTester } from '@tamyla/clodo-framework/deployment/testers';
|
|
142
|
+
|
|
143
|
+
// API testing only
|
|
144
|
+
const apiResults = await new ApiTester().runApiTests('production');
|
|
145
|
+
|
|
146
|
+
// Authentication testing only
|
|
147
|
+
const authResults = await new AuthTester().runAuthTests(baseUrl, testUser);
|
|
148
|
+
|
|
149
|
+
// Database testing only
|
|
150
|
+
const dbResults = await new DatabaseTester().runDatabaseTests('production');
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Individual Modules:**
|
|
154
|
+
- `ApiTester` - Endpoint and CRUD operation testing
|
|
155
|
+
- `AuthTester` - JWT, API keys, session management
|
|
156
|
+
- `DatabaseTester` - D1 connectivity and query validation
|
|
157
|
+
- `PerformanceTester` - Response times and throughput
|
|
158
|
+
- `LoadTester` - Scalability and concurrent user testing
|
|
159
|
+
|
|
160
|
+
### **Pre-Deployment Validation** ✅
|
|
161
|
+
Comprehensive validation before deployment:
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
import { DeploymentValidator } from '@tamyla/clodo-framework/deployment';
|
|
165
|
+
|
|
166
|
+
const validator = new DeploymentValidator({
|
|
167
|
+
validationLevel: 'comprehensive'
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Validate deployment readiness
|
|
171
|
+
const result = await validator.validateDeployment(['your-service.com'], {
|
|
172
|
+
environment: 'production'
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Validation Categories:**
|
|
177
|
+
- **Prerequisites**: Node.js, wrangler CLI, required files
|
|
178
|
+
- **Authentication**: Cloudflare API tokens and permissions
|
|
179
|
+
- **Network**: Connectivity and DNS resolution
|
|
180
|
+
- **Configuration**: Environment variables and wrangler.toml
|
|
181
|
+
- **Endpoints**: Service accessibility and response validation
|
|
182
|
+
- **Deployment**: Build process and resource availability
|
|
183
|
+
|
|
184
|
+
### **Third-Party Account Operations** ☁️
|
|
185
|
+
Deploy and manage services across multiple Cloudflare accounts:
|
|
186
|
+
|
|
187
|
+
```javascript
|
|
188
|
+
import { CloudflareDomainManager } from '@tamyla/clodo-framework/deployment';
|
|
189
|
+
|
|
190
|
+
const manager = new CloudflareDomainManager({
|
|
191
|
+
apiToken: process.env.CUSTOMER_CLOUDFLARE_TOKEN
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
// Verify authentication in customer account
|
|
195
|
+
await manager.verifyAuthentication();
|
|
196
|
+
|
|
197
|
+
// Deploy to customer environment
|
|
198
|
+
await manager.deployService({
|
|
199
|
+
serviceName: 'data-service',
|
|
200
|
+
domain: 'customer-service.com'
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Multi-Account Features:**
|
|
205
|
+
- **Account Discovery**: Automatically detect available domains
|
|
206
|
+
- **Permission Validation**: Verify deployment permissions
|
|
207
|
+
- **Service Matching**: Intelligent domain-to-service mapping
|
|
208
|
+
- **Cross-Account Coordination**: Deploy across multiple accounts
|
|
209
|
+
|
|
210
|
+
### **Interactive Developer Involvement** 👥
|
|
211
|
+
When issues are detected, the framework actively involves developers:
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
// Framework detects authentication issues and guides resolution
|
|
215
|
+
const authChoice = await askChoice(
|
|
216
|
+
'Cloudflare authentication needed. What would you like to do?',
|
|
217
|
+
[
|
|
218
|
+
'Login to Cloudflare now',
|
|
219
|
+
'Provide API token manually',
|
|
220
|
+
'Skip verification (limited features)',
|
|
221
|
+
'Cancel deployment'
|
|
222
|
+
]
|
|
223
|
+
);
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### **Security-First Deployment** 🔒
|
|
227
|
+
Automatic security validation prevents insecure deployments:
|
|
228
|
+
|
|
229
|
+
```javascript
|
|
230
|
+
import { deployWithSecurity } from '@tamyla/clodo-framework/security';
|
|
231
|
+
|
|
232
|
+
await deployWithSecurity({
|
|
233
|
+
customer: 'your-customer',
|
|
234
|
+
environment: 'production',
|
|
235
|
+
deploymentUrl: 'https://service.workers.dev'
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Security Validations:**
|
|
240
|
+
- **API Key Validation**: Blocks dummy/test keys in production
|
|
241
|
+
- **Secret Strength**: Enforces secure JWT secrets
|
|
242
|
+
- **Environment Compliance**: Different rules per environment
|
|
243
|
+
- **Configuration Auditing**: Logs all security decisions
|
|
244
|
+
|
|
245
|
+
### **Integration Examples**
|
|
246
|
+
|
|
247
|
+
**Post-Deployment Testing:**
|
|
248
|
+
```javascript
|
|
249
|
+
// Test service after deployment
|
|
250
|
+
const testResults = await tester.runProductionTests(deploymentUrl, {
|
|
251
|
+
testSuites: ['health', 'authentication', 'endpoints']
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
if (testResults.summary.failed > 0) {
|
|
255
|
+
console.error('❌ Post-deployment tests failed');
|
|
256
|
+
await rollbackManager.rollback(deployment.id);
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Multi-Account Deployment:**
|
|
261
|
+
```javascript
|
|
262
|
+
// Deploy across customer accounts
|
|
263
|
+
const results = await Promise.allSettled(
|
|
264
|
+
customers.map(customer =>
|
|
265
|
+
deployToCustomerAccount(customer, serviceConfig)
|
|
266
|
+
)
|
|
267
|
+
);
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
> **📖 Complete Documentation**: See our [Integration Guide](./docs/INTEGRATION_GUIDE.md) and [Deployment Guide](./docs/deployment/deployment-guide.md) for comprehensive testing and validation documentation.
|
|
271
|
+
|
|
272
|
+
## � For Developers
|
|
273
|
+
|
|
274
|
+
If you're building services with the Clodo Framework, see our comprehensive [Developer Guide](./docs/guides/developer-guide.md) for:
|
|
275
|
+
|
|
276
|
+
- Installation and setup instructions
|
|
277
|
+
- Service creation and configuration
|
|
278
|
+
- Best practices for using public APIs
|
|
279
|
+
- Deployment patterns (embedding logic, not calling internal commands)
|
|
280
|
+
- Troubleshooting and common issues
|
|
281
|
+
|
|
282
|
+
### 📋 **Framework Architecture**
|
|
283
|
+
For an overview of the framework's architecture and design philosophy, see our [Architecture Overview](./docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md):
|
|
284
|
+
|
|
285
|
+
- Core components and usage patterns
|
|
286
|
+
- Library vs CLI tool approaches
|
|
287
|
+
- Intelligent features and orchestration
|
|
288
|
+
- Design principles and benefits
|
|
289
|
+
|
|
290
|
+
> **Note**: For detailed technical analysis and internal implementation details, see [FRAMEWORK-ARCHITECTURE-ANALYSIS.md](./docs/FRAMEWORK-ARCHITECTURE-ANALYSIS.md) (internal maintainer documentation).
|
|
291
|
+
|
|
292
|
+
## 📘 TypeScript Support
|
|
293
|
+
|
|
294
|
+
The Clodo Framework provides comprehensive TypeScript support with 500+ lines of type definitions for complete type safety and enhanced developer experience.
|
|
295
|
+
|
|
296
|
+
### **TypeScript Setup**
|
|
297
|
+
```typescript
|
|
298
|
+
// types/index.d.ts provides complete type coverage
|
|
299
|
+
import {
|
|
300
|
+
SchemaManager,
|
|
301
|
+
GenericDataService,
|
|
302
|
+
EnhancedRouter,
|
|
303
|
+
CustomerConfigurationManager
|
|
304
|
+
} from '@tamyla/clodo-framework';
|
|
305
|
+
|
|
306
|
+
// Full IntelliSense and type checking
|
|
307
|
+
const schemaManager = new SchemaManager();
|
|
308
|
+
const service = new GenericDataService(d1Client, 'users');
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### **Key TypeScript Features**
|
|
312
|
+
- **Complete API Coverage**: Every exported function and class is fully typed
|
|
313
|
+
- **Advanced Generic Types**: Complex data structures with proper generic constraints
|
|
314
|
+
- **Validation Types**: Type-safe schema definitions and validation results
|
|
315
|
+
- **Cache Types**: Typed caching interfaces with TTL and statistics
|
|
316
|
+
- **Security Types**: Comprehensive security validation and key generation types
|
|
317
|
+
- **IDE Integration**: Full IntelliSense, auto-completion, and refactoring support
|
|
318
|
+
|
|
319
|
+
> **Important**: The commands below are for framework development and internal use. External developers should embed deployment logic in their services rather than calling these scripts directly.
|
|
320
|
+
|
|
321
|
+
## �🚀 Working Commands
|
|
322
|
+
|
|
323
|
+
### **Enterprise Deployment (Primary)**
|
|
324
|
+
```bash
|
|
325
|
+
# Interactive domain deployment (Recommended)
|
|
326
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive
|
|
327
|
+
|
|
328
|
+
# Direct domain deployment
|
|
329
|
+
node bin/deployment/enterprise-deploy.js deploy data-service.greatidude.com
|
|
330
|
+
|
|
331
|
+
# Deployment with custom validation level
|
|
332
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive --validation comprehensive
|
|
333
|
+
|
|
334
|
+
# Dry run deployment
|
|
335
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive --dry-run
|
|
336
|
+
|
|
337
|
+
# Skip production tests
|
|
338
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive --no-tests
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### **🔒 Security Validation (Critical)**
|
|
342
|
+
```bash
|
|
343
|
+
# Validate configuration security before deployment
|
|
344
|
+
npx clodo-security validate customer production
|
|
345
|
+
|
|
346
|
+
# Generate cryptographically secure keys
|
|
347
|
+
npx clodo-security generate-key jwt 64
|
|
348
|
+
npx clodo-security generate-key api content-skimmer
|
|
349
|
+
|
|
350
|
+
# Deploy with automatic security validation
|
|
351
|
+
npx clodo-security deploy customer production --dry-run
|
|
352
|
+
|
|
353
|
+
# Check deployment readiness
|
|
354
|
+
npx clodo-security check-readiness customer production
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### **👥 Customer Configuration Management**
|
|
358
|
+
```bash
|
|
359
|
+
# Create new customer configuration from templates
|
|
360
|
+
npm run customer-config create-customer mycompany mycompany.com
|
|
361
|
+
|
|
362
|
+
# List all configured customers
|
|
363
|
+
npm run customer-config list
|
|
364
|
+
|
|
365
|
+
# Show effective configuration for customer/environment
|
|
366
|
+
npm run customer-config show mycompany production
|
|
367
|
+
|
|
368
|
+
# Validate customer configuration structure
|
|
369
|
+
npm run customer-config validate
|
|
370
|
+
|
|
371
|
+
# Get deployment command for customer
|
|
372
|
+
npm run customer-config deploy-command mycompany staging
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### **Domain Management**
|
|
376
|
+
```bash
|
|
377
|
+
# List available domains
|
|
378
|
+
node bin/deployment/enterprise-deploy.js list
|
|
379
|
+
|
|
380
|
+
# Discover domain configuration
|
|
381
|
+
node bin/deployment/enterprise-deploy.js discover data-service.greatidude.com
|
|
382
|
+
|
|
383
|
+
# Validate domain setup
|
|
384
|
+
node bin/deployment/enterprise-deploy.js validate data-service.greatidude.com
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### **Multi-Domain Operations**
|
|
388
|
+
```bash
|
|
389
|
+
# Deploy multiple domains
|
|
390
|
+
node bin/deployment/enterprise-deploy.js deploy-multi domain1.com domain2.com
|
|
391
|
+
|
|
392
|
+
# Deploy entire portfolio
|
|
393
|
+
node bin/deployment/enterprise-deploy.js deploy-portfolio
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## 🔧 Environment Requirements
|
|
397
|
+
|
|
398
|
+
### **Prerequisites**
|
|
399
|
+
```bash
|
|
400
|
+
# Required
|
|
401
|
+
Node.js >= 18.0.0
|
|
402
|
+
npm >= 9.0.0
|
|
403
|
+
npx (comes with npm)
|
|
404
|
+
wrangler >= 3.0.0
|
|
405
|
+
|
|
406
|
+
# Verify installation
|
|
407
|
+
node --version
|
|
408
|
+
npm --version
|
|
409
|
+
npx wrangler --version
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### **Cloudflare Setup**
|
|
413
|
+
1. **Cloudflare Account**: Active account with API access
|
|
414
|
+
2. **API Token**: Token with permissions:
|
|
415
|
+
- `Zone:Read` (for domain discovery)
|
|
416
|
+
- `Zone Resources:Edit` (for worker deployment)
|
|
417
|
+
- `Account:Read` (optional, for enhanced features)
|
|
418
|
+
- `Cloudflare D1:Edit` (optional, for database discovery)
|
|
419
|
+
3. **Domain Configuration**: Domains should be added to Cloudflare zones
|
|
420
|
+
|
|
421
|
+
### **Service Structure**
|
|
422
|
+
```
|
|
423
|
+
services/
|
|
424
|
+
├── data-service/ # Service directory
|
|
425
|
+
│ ├── wrangler.toml # Cloudflare configuration
|
|
426
|
+
│ ├── package.json # Service dependencies
|
|
427
|
+
│ └── src/
|
|
428
|
+
│ ├── config/domains.js # Domain configuration
|
|
429
|
+
│ └── worker/index.js # Worker entry point
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
## 🚀 Quick Start
|
|
433
|
+
|
|
434
|
+
### **1. First Time Setup**
|
|
435
|
+
```bash
|
|
436
|
+
# Clone the framework
|
|
437
|
+
git clone <repository-url>
|
|
438
|
+
cd clodo-framework
|
|
439
|
+
|
|
440
|
+
# Install dependencies
|
|
441
|
+
npm install
|
|
442
|
+
|
|
443
|
+
# Ensure wrangler is available
|
|
444
|
+
npx wrangler --version
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### **2. Cloudflare Authentication**
|
|
448
|
+
```bash
|
|
449
|
+
# Login to Cloudflare (first time only)
|
|
450
|
+
npx wrangler auth login
|
|
451
|
+
|
|
452
|
+
# Or set API token directly (will be prompted automatically)
|
|
453
|
+
# The system will securely store your token with encryption
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### **3. Deploy a Service**
|
|
457
|
+
```bash
|
|
458
|
+
# Interactive deployment (recommended for first time)
|
|
459
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive
|
|
460
|
+
|
|
461
|
+
# The system will:
|
|
462
|
+
# 1. Discover available services
|
|
463
|
+
# 2. Let you select a domain
|
|
464
|
+
# 3. Validate Cloudflare setup
|
|
465
|
+
# 4. Deploy the worker
|
|
466
|
+
# 5. Run production tests
|
|
467
|
+
# 6. Generate audit reports
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### **4. Verify Deployment**
|
|
471
|
+
The deployment will output the worker URL. Visit it to confirm it's working:
|
|
472
|
+
```
|
|
473
|
+
✅ Deployment successful: https://your-service.your-domain.com
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
## Project Structure
|
|
477
|
+
|
|
478
|
+
```
|
|
479
|
+
clodo-framework/
|
|
480
|
+
├── bin/ # Executable scripts and CLI tools
|
|
481
|
+
│ ├── service-management/ # Service creation and initialization
|
|
482
|
+
│ ├── deployment/ # Enterprise deployment tools
|
|
483
|
+
│ ├── database/ # Database management tools
|
|
484
|
+
│ ├── portfolio/ # Multi-service portfolio management
|
|
485
|
+
│ └── shared/ # Shared utility modules
|
|
486
|
+
│ └── config/ # Configuration management tools
|
|
487
|
+
│ └── customer-cli.js # Customer configuration CLI
|
|
488
|
+
├── scripts/ # PowerShell scripts and utilities
|
|
489
|
+
│ ├── service-management/ # Service setup scripts
|
|
490
|
+
│ ├── deployment/ # Deployment scripts
|
|
491
|
+
│ ├── testing/ # Testing utilities
|
|
492
|
+
│ └── utilities/ # General utilities
|
|
493
|
+
├── services/ # Generated services directory
|
|
494
|
+
│ ├── my-api-service/ # Individual service directories
|
|
495
|
+
│ ├── auth-service/ # Auto-organized by init-service
|
|
496
|
+
│ └── data-service/ # Each with complete Cloudflare setup
|
|
497
|
+
├── docs/ # Documentation
|
|
498
|
+
│ ├── analysis/ # Development analysis and demos
|
|
499
|
+
│ ├── api/ # API documentation
|
|
500
|
+
│ ├── examples/ # Usage examples
|
|
501
|
+
│ └── guides/ # User guides
|
|
502
|
+
├── test/ # Test suite
|
|
503
|
+
│ └── integration/ # Integration tests
|
|
504
|
+
├── src/ # Framework source code
|
|
505
|
+
│ └── config/ # Configuration management
|
|
506
|
+
│ ├── customers.js # Customer configuration manager
|
|
507
|
+
│ ├── domains.js # Domain configuration system
|
|
508
|
+
│ └── features.js # Feature flag system
|
|
509
|
+
├── templates/ # Service templates
|
|
510
|
+
├── config-templates/ # Configuration templates
|
|
511
|
+
└── config/ # Framework configuration
|
|
512
|
+
└── customers/ # Customer configuration templates
|
|
513
|
+
└── template/ # Reusable customer config templates
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
## Enterprise Deployment & Orchestration
|
|
517
|
+
|
|
518
|
+
The Clodo Framework now includes comprehensive enterprise-grade deployment and orchestration capabilities, extracted from production systems and made reusable across all services.
|
|
519
|
+
|
|
520
|
+
### Orchestration Modules
|
|
521
|
+
|
|
522
|
+
```javascript
|
|
523
|
+
import { MultiDomainOrchestrator, CrossDomainCoordinator } from '@tamyla/clodo-framework/orchestration';
|
|
524
|
+
|
|
525
|
+
// Multi-domain deployment orchestration
|
|
526
|
+
const orchestrator = new MultiDomainOrchestrator({
|
|
527
|
+
domains: ['api', 'auth', 'data'],
|
|
528
|
+
environment: 'production',
|
|
529
|
+
parallelDeployments: 3
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
// Cross-domain coordination for complex deployments
|
|
533
|
+
const coordinator = new CrossDomainCoordinator({
|
|
534
|
+
portfolioName: 'enterprise-suite',
|
|
535
|
+
maxConcurrentDeployments: 5,
|
|
536
|
+
enableDependencyResolution: true
|
|
537
|
+
});
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
### Deployment Management
|
|
541
|
+
|
|
542
|
+
```javascript
|
|
543
|
+
import { DeploymentValidator, RollbackManager, ProductionTester, DeploymentAuditor } from '@tamyla/clodo-framework/deployment';
|
|
544
|
+
|
|
545
|
+
// Pre-deployment validation
|
|
546
|
+
const validator = new DeploymentValidator();
|
|
547
|
+
await validator.validateDeployment(deploymentConfig);
|
|
548
|
+
|
|
549
|
+
// Production testing suite
|
|
550
|
+
const tester = new ProductionTester();
|
|
551
|
+
await tester.runProductionTests(deploymentId);
|
|
552
|
+
|
|
553
|
+
// Rollback management
|
|
554
|
+
const rollback = new RollbackManager();
|
|
555
|
+
await rollback.createRollbackPoint(deploymentId);
|
|
556
|
+
|
|
557
|
+
// Comprehensive audit logging
|
|
558
|
+
const auditor = new DeploymentAuditor();
|
|
559
|
+
auditor.logDeployment(deploymentId, 'started', { domains: ['api', 'auth'] });
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
### Database Orchestration
|
|
563
|
+
|
|
564
|
+
```javascript
|
|
565
|
+
import { DatabaseOrchestrator } from '@tamyla/clodo-framework/database';
|
|
566
|
+
|
|
567
|
+
// Multi-environment database management
|
|
568
|
+
const dbOrchestrator = new DatabaseOrchestrator({
|
|
569
|
+
projectRoot: './',
|
|
570
|
+
dryRun: false
|
|
571
|
+
});
|
|
572
|
+
|
|
573
|
+
// Run migrations across environments
|
|
574
|
+
await dbOrchestrator.runMigrations('production');
|
|
575
|
+
await dbOrchestrator.createBackup('production');
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
### Domain Discovery
|
|
579
|
+
|
|
580
|
+
```javascript
|
|
581
|
+
import { DomainDiscovery } from '@tamyla/clodo-framework/config/discovery';
|
|
582
|
+
|
|
583
|
+
// Runtime domain discovery and configuration
|
|
584
|
+
const discovery = new DomainDiscovery({
|
|
585
|
+
apiToken: process.env.CLOUDFLARE_API_TOKEN
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
// Discover and cache domain configurations
|
|
589
|
+
await discovery.discoverDomains();
|
|
590
|
+
const config = await discovery.getDomainConfig('my-domain');
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
### Customer Configuration Management
|
|
594
|
+
|
|
595
|
+
```javascript
|
|
596
|
+
import { CustomerConfigurationManager } from '@tamyla/clodo-framework/config';
|
|
597
|
+
|
|
598
|
+
// Framework-mode customer management (uses mock values for testing)
|
|
599
|
+
const customerManager = new CustomerConfigurationManager();
|
|
600
|
+
|
|
601
|
+
// Create customer configuration from templates
|
|
602
|
+
await customerManager.createCustomer('acmecorp', 'acmecorp.com', {
|
|
603
|
+
skipValidation: true,
|
|
604
|
+
isFrameworkMode: true
|
|
605
|
+
});
|
|
606
|
+
|
|
607
|
+
// Show effective configuration
|
|
608
|
+
const config = customerManager.showConfig('acmecorp', 'production');
|
|
609
|
+
|
|
610
|
+
// Validate customer configurations
|
|
611
|
+
const validation = await customerManager.validateConfigs();
|
|
612
|
+
|
|
613
|
+
// Get deployment commands
|
|
614
|
+
const deployCmd = customerManager.getDeployCommand('acmecorp', 'staging');
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Deployment Utilities
|
|
618
|
+
|
|
619
|
+
```javascript
|
|
620
|
+
import { EnhancedSecretManager, ConfigurationCacheManager, askUser, askYesNo } from '@tamyla/clodo-framework/utils/deployment';
|
|
621
|
+
|
|
622
|
+
// Advanced secret management
|
|
623
|
+
const secretManager = new EnhancedSecretManager();
|
|
624
|
+
await secretManager.generateSecrets(['database', 'api-keys']);
|
|
625
|
+
|
|
626
|
+
// Configuration caching
|
|
627
|
+
const cache = new ConfigurationCacheManager();
|
|
628
|
+
await cache.cacheConfiguration(deploymentId, config);
|
|
629
|
+
|
|
630
|
+
// Interactive prompts for deployment scripts
|
|
631
|
+
const environment = await askChoice('Select environment:', ['staging', 'production']);
|
|
632
|
+
const confirmed = await askYesNo('Deploy to production?');
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
## Enterprise CLI Tools
|
|
636
|
+
|
|
637
|
+
The Clodo Framework now includes powerful command-line tools for enterprise deployment and portfolio management.
|
|
638
|
+
|
|
639
|
+
### Installation
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
npm install -g @tamyla/clodo-framework
|
|
643
|
+
# or
|
|
644
|
+
npx @tamyla/clodo-framework --help
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
### Available CLI Tools
|
|
648
|
+
|
|
649
|
+
#### `clodo-deploy` - Enterprise Deployment CLI
|
|
650
|
+
Advanced deployment system with multi-domain orchestration, validation, and rollback capabilities.
|
|
651
|
+
|
|
652
|
+
```bash
|
|
653
|
+
# Deploy a single domain
|
|
654
|
+
npx clodo-deploy deploy my-domain --environment production
|
|
655
|
+
|
|
656
|
+
# Deploy multiple domains with coordination
|
|
657
|
+
npx clodo-deploy deploy-multi api auth data --parallel
|
|
658
|
+
|
|
659
|
+
# Validate deployment readiness
|
|
660
|
+
npx clodo-deploy validate my-domain
|
|
661
|
+
|
|
662
|
+
# Run production tests
|
|
663
|
+
npx clodo-deploy test my-domain
|
|
664
|
+
|
|
665
|
+
# Rollback deployment
|
|
666
|
+
npx clodo-deploy rollback my-domain
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
#### `clodo-master-deploy` - Master Deployment Orchestrator
|
|
670
|
+
Comprehensive deployment orchestrator with enterprise features and portfolio management.
|
|
671
|
+
|
|
672
|
+
```bash
|
|
673
|
+
# Deploy with full orchestration
|
|
674
|
+
npx clodo-master-deploy orchestrate --domains api,auth,data
|
|
675
|
+
|
|
676
|
+
# Run pre-deployment validation
|
|
677
|
+
npx clodo-master-deploy validate --portfolio
|
|
678
|
+
|
|
679
|
+
# Monitor deployment progress
|
|
680
|
+
npx clodo-master-deploy monitor
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
#### `clodo-portfolio` - Portfolio Management CLI
|
|
684
|
+
Multi-domain portfolio operations with bulk management and analytics.
|
|
685
|
+
|
|
686
|
+
```bash
|
|
687
|
+
# Initialize portfolio
|
|
688
|
+
npx clodo-portfolio init --portfolio-name my-enterprise
|
|
689
|
+
|
|
690
|
+
# Discover all domains
|
|
691
|
+
npx clodo-portfolio discover
|
|
692
|
+
|
|
693
|
+
# Deploy entire portfolio
|
|
694
|
+
npx clodo-portfolio deploy
|
|
695
|
+
|
|
696
|
+
# Get portfolio health status
|
|
697
|
+
npx clodo-portfolio health
|
|
698
|
+
|
|
699
|
+
# Generate portfolio analytics
|
|
700
|
+
npx clodo-portfolio analytics
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
#### `clodo-db` - Database Management CLI
|
|
704
|
+
Enterprise database operations across multiple environments.
|
|
705
|
+
|
|
706
|
+
```bash
|
|
707
|
+
# Run migrations for domain
|
|
708
|
+
npx clodo-db migrate my-domain --environment production
|
|
709
|
+
|
|
710
|
+
# Synchronize schemas across portfolio
|
|
711
|
+
npx clodo-db sync --portfolio
|
|
712
|
+
|
|
713
|
+
# Create backups
|
|
714
|
+
npx clodo-db backup my-domain
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
#### `clodo-secrets` - Secret Generation Utility
|
|
718
|
+
Cryptographically secure secret generation for production deployments.
|
|
719
|
+
|
|
720
|
+
```bash
|
|
721
|
+
# Generate secrets for domain
|
|
722
|
+
npx clodo-secrets --domain my-domain --environment production
|
|
723
|
+
|
|
724
|
+
# Generate specific secret types
|
|
725
|
+
npx clodo-secrets --types database,api-keys,jwt --persist
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
## Quick Start
|
|
729
|
+
|
|
730
|
+
### Install the Framework
|
|
731
|
+
|
|
732
|
+
```bash
|
|
733
|
+
npm install @tamyla/clodo-framework
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
### Create a New Service
|
|
737
|
+
|
|
738
|
+
```bash
|
|
739
|
+
npx create-clodo-service my-new-service --type data-service
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
### Basic Usage
|
|
743
|
+
|
|
744
|
+
```javascript
|
|
745
|
+
import { initializeService, createFeatureGuard, FeatureFlagManager } from '@tamyla/clodo-framework';
|
|
746
|
+
|
|
747
|
+
export default {
|
|
748
|
+
async fetch(request, env, ctx) {
|
|
749
|
+
// Initialize service with domain context
|
|
750
|
+
const service = initializeService(env);
|
|
751
|
+
|
|
752
|
+
// Feature-guarded endpoints
|
|
753
|
+
if (request.url.includes('/premium')) {
|
|
754
|
+
return createFeatureGuard('premiumFeatures')(
|
|
755
|
+
handlePremiumRequest
|
|
756
|
+
)(request, env, ctx);
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
return handleRequest(request, env, ctx);
|
|
760
|
+
}
|
|
761
|
+
};
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
## Deployment Workflow
|
|
765
|
+
|
|
766
|
+
The Clodo Framework provides a clear **setup-first, deploy-second** workflow to avoid configuration dependency issues.
|
|
767
|
+
|
|
768
|
+
### Phase 1: Service Initialization (Setup)
|
|
769
|
+
|
|
770
|
+
Before deployment, initialize your service to generate required configuration files:
|
|
771
|
+
|
|
772
|
+
```bash
|
|
773
|
+
# Initialize a new service with configuration generation
|
|
774
|
+
npx clodo-init my-service --type api-gateway --env development
|
|
775
|
+
|
|
776
|
+
# This creates:
|
|
777
|
+
# - wrangler.toml (Cloudflare Workers config)
|
|
778
|
+
# - src/config/domains.js (Domain configuration)
|
|
779
|
+
# - Validates environment variables
|
|
780
|
+
# - Prepares for deployment
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
### Phase 2: Deployment (Deploy)
|
|
784
|
+
|
|
785
|
+
Once initialized, deploy using the enterprise deployment system:
|
|
786
|
+
|
|
787
|
+
```bash
|
|
788
|
+
# Deploy to production
|
|
789
|
+
npx clodo-deploy my-service --env production
|
|
790
|
+
|
|
791
|
+
# Multi-domain deployment
|
|
792
|
+
npx clodo-deploy-multi api auth data --env staging
|
|
793
|
+
|
|
794
|
+
# Portfolio deployment (all domains)
|
|
795
|
+
npx clodo-deploy-portfolio --env production
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
### Environment Variables Required
|
|
799
|
+
|
|
800
|
+
Set these before deployment:
|
|
801
|
+
|
|
802
|
+
```bash
|
|
803
|
+
export CLOUDFLARE_ACCOUNT_ID="your_account_id"
|
|
804
|
+
export CLOUDFLARE_ZONE_ID="your_zone_id"
|
|
805
|
+
export CLOUDFLARE_API_TOKEN="your_api_token"
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
### Workflow Order
|
|
809
|
+
|
|
810
|
+
1. **Init** → Generate configurations and validate setup
|
|
811
|
+
2. **Deploy** → Deploy with enterprise orchestration
|
|
812
|
+
3. **Monitor** → Use built-in auditing and rollback features
|
|
813
|
+
|
|
814
|
+
This ensures configurations exist before deployment attempts, eliminating the "expecting wrangler.toml readily available" issue for first-time deployments.
|
|
815
|
+
|
|
816
|
+
## Architecture
|
|
817
|
+
|
|
818
|
+
### Core Components
|
|
819
|
+
|
|
820
|
+
1. **Domain Configuration**: JSON-based configuration with validation
|
|
821
|
+
2. **Feature Flags**: Runtime feature management
|
|
822
|
+
3. **Worker Integration**: Service initialization helpers
|
|
823
|
+
4. **Deployment Framework**: Automated deployment scripts
|
|
824
|
+
5. **Service Registry**: Cross-service communication
|
|
825
|
+
|
|
826
|
+
### Service Structure
|
|
827
|
+
|
|
828
|
+
```
|
|
829
|
+
services/my-service/
|
|
830
|
+
├── src/
|
|
831
|
+
│ ├── config/
|
|
832
|
+
│ │ ├── domains.js # Service-specific domain configs
|
|
833
|
+
│ │ └── features.js # Service feature definitions
|
|
834
|
+
│ ├── worker/
|
|
835
|
+
│ │ └── index.js # Main worker handler
|
|
836
|
+
│ └── routes/
|
|
837
|
+
├── scripts/
|
|
838
|
+
│ ├── deploy.ps1 # Deployment script
|
|
839
|
+
│ └── setup.ps1 # Setup script
|
|
840
|
+
├── package.json
|
|
841
|
+
└── wrangler.toml
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
## Configuration
|
|
845
|
+
|
|
846
|
+
### Domain Configuration
|
|
847
|
+
|
|
848
|
+
```javascript
|
|
849
|
+
// config/domains.js
|
|
850
|
+
import { createDomainConfigSchema } from '@tamyla/clodo-framework';
|
|
851
|
+
|
|
852
|
+
export const domains = {
|
|
853
|
+
'my-domain': {
|
|
854
|
+
...createDomainConfigSchema(),
|
|
855
|
+
name: 'my-domain',
|
|
856
|
+
displayName: 'My Domain',
|
|
857
|
+
accountId: 'your-cloudflare-account-id',
|
|
858
|
+
zoneId: 'your-zone-id',
|
|
859
|
+
domains: {
|
|
860
|
+
production: 'api.myapp.com',
|
|
861
|
+
staging: 'staging-api.myapp.com'
|
|
862
|
+
},
|
|
863
|
+
features: {
|
|
864
|
+
premiumFeatures: true,
|
|
865
|
+
analytics: false
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
};
|
|
869
|
+
```
|
|
870
|
+
|
|
871
|
+
### Feature Definitions
|
|
872
|
+
|
|
873
|
+
```javascript
|
|
874
|
+
// config/features.js
|
|
875
|
+
export const FEATURES = {
|
|
876
|
+
PREMIUM_FEATURES: 'premiumFeatures',
|
|
877
|
+
ANALYTICS: 'analytics',
|
|
878
|
+
FILE_STORAGE: 'fileStorage'
|
|
879
|
+
};
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
## Deployment
|
|
883
|
+
|
|
884
|
+
### Automated Deployment
|
|
885
|
+
|
|
886
|
+
```powershell
|
|
887
|
+
# Deploy to staging
|
|
888
|
+
.\scripts\deploy.ps1 -DomainName my-domain -Environment staging
|
|
889
|
+
|
|
890
|
+
# Deploy to production
|
|
891
|
+
.\scripts\deploy.ps1 -DomainName my-domain -Environment production
|
|
892
|
+
```
|
|
893
|
+
|
|
894
|
+
### Interactive Setup
|
|
895
|
+
|
|
896
|
+
```powershell
|
|
897
|
+
# Run interactive setup
|
|
898
|
+
.\scripts\setup.ps1
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
## � Troubleshooting
|
|
902
|
+
|
|
903
|
+
### **Common Issues & Solutions**
|
|
904
|
+
|
|
905
|
+
#### **"Service directory not found for domain"**
|
|
906
|
+
```bash
|
|
907
|
+
# Problem: No service exists for the domain
|
|
908
|
+
# Solution: Check available services
|
|
909
|
+
node bin/deployment/enterprise-deploy.js list
|
|
910
|
+
|
|
911
|
+
# Or create a new service (if service creation tools are available)
|
|
912
|
+
# Ensure the service has proper domain configuration in src/config/domains.js
|
|
913
|
+
```
|
|
914
|
+
|
|
915
|
+
#### **"API token required for domain verification"**
|
|
916
|
+
```bash
|
|
917
|
+
# Problem: No Cloudflare authentication
|
|
918
|
+
# Solution: The system will automatically prompt for API token
|
|
919
|
+
# Or manually set up wrangler auth:
|
|
920
|
+
npx wrangler auth login
|
|
921
|
+
```
|
|
922
|
+
|
|
923
|
+
#### **"D1 database discovery requires additional permissions"**
|
|
924
|
+
```bash
|
|
925
|
+
# This is informational only - deployment continues successfully
|
|
926
|
+
# To enable D1 discovery, update your API token with:
|
|
927
|
+
# - Account:Read permissions
|
|
928
|
+
# - Cloudflare D1:Edit permissions
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
#### **Production tests failing with ENOTFOUND**
|
|
932
|
+
```bash
|
|
933
|
+
# This is normal for new deployments during DNS propagation
|
|
934
|
+
# The system waits 10 seconds but some domains may need longer
|
|
935
|
+
# Tests failures don't prevent deployment success
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
#### **"npx command not found" on Windows**
|
|
939
|
+
```bash
|
|
940
|
+
# Problem: Command configuration for cross-platform compatibility
|
|
941
|
+
# Solution: The system uses validation-config.json for command mapping
|
|
942
|
+
# Ensure npx is in your PATH or update the config file
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
### **Debug Mode**
|
|
946
|
+
```bash
|
|
947
|
+
# Run with verbose logging
|
|
948
|
+
node bin/deployment/enterprise-deploy.js deploy --interactive --validation comprehensive
|
|
949
|
+
|
|
950
|
+
# Check specific domain configuration
|
|
951
|
+
node bin/deployment/enterprise-deploy.js discover your-domain.com
|
|
952
|
+
```
|
|
953
|
+
|
|
954
|
+
## �📚 Development Insights & Lessons Learned
|
|
955
|
+
|
|
956
|
+
### **Key Architecture Decisions**
|
|
957
|
+
|
|
958
|
+
#### **1. Interactive vs Hardcoded Parameters** ✅
|
|
959
|
+
- **Problem**: Original system required domain as command argument
|
|
960
|
+
- **Solution**: Added `--interactive` flag for domain selection from discovered services
|
|
961
|
+
- **Impact**: Much better UX, reduces deployment errors
|
|
962
|
+
|
|
963
|
+
#### **2. Cross-Platform Command Compatibility** ✅
|
|
964
|
+
- **Problem**: Hardcoded commands failed on different platforms (Windows vs Linux)
|
|
965
|
+
- **Solution**: Configurable command system via `validation-config.json`
|
|
966
|
+
- **Impact**: Seamless cross-platform operation
|
|
967
|
+
|
|
968
|
+
#### **3. API Token Management** ✅
|
|
969
|
+
- **Problem**: OAuth authentication insufficient for API operations
|
|
970
|
+
- **Solution**: Secure API token storage with AES-256-CBC encryption
|
|
971
|
+
- **Impact**: Reliable authentication with automated prompting
|
|
972
|
+
|
|
973
|
+
#### **4. Service Discovery Intelligence** ✅
|
|
974
|
+
- **Problem**: Expected exact directory names matching domains
|
|
975
|
+
- **Solution**: Smart discovery by checking `domains.js` configuration files
|
|
976
|
+
- **Impact**: Flexible service organization and deployment
|
|
977
|
+
|
|
978
|
+
#### **5. Real vs Mock Deployments** ✅
|
|
979
|
+
- **Problem**: Mock deployments provided false success with undefined URLs
|
|
980
|
+
- **Solution**: Actual wrangler execution with URL extraction
|
|
981
|
+
- **Impact**: Real deployment validation and working services
|
|
982
|
+
|
|
983
|
+
### **Production-Ready Improvements Implemented**
|
|
984
|
+
|
|
985
|
+
#### **Graceful Error Handling**
|
|
986
|
+
```javascript
|
|
987
|
+
// D1 database discovery with permission graceful degradation
|
|
988
|
+
if (error.message.includes('401') || error.message.includes('Unauthorized')) {
|
|
989
|
+
console.log(`ℹ️ D1 database discovery requires additional API token permissions`);
|
|
990
|
+
console.log(`💡 To enable D1 discovery, ensure your API token has 'Account:Read' or 'Cloudflare D1:Edit' permissions`);
|
|
991
|
+
} else {
|
|
992
|
+
console.log(`⚠️ D1 database discovery failed: ${error.message}`);
|
|
993
|
+
}
|
|
994
|
+
```
|
|
995
|
+
|
|
996
|
+
#### **Smart Service Directory Discovery**
|
|
997
|
+
```javascript
|
|
998
|
+
// Find service directory by domain configuration rather than exact name match
|
|
999
|
+
for (const serviceDir of serviceDirs) {
|
|
1000
|
+
const domainsPath = join(servicesDir, serviceDir, 'src', 'config', 'domains.js');
|
|
1001
|
+
if (existsSync(domainsPath)) {
|
|
1002
|
+
const domainsContent = await fs.readFile(domainsPath, 'utf8');
|
|
1003
|
+
if (domainsContent.includes(domain)) {
|
|
1004
|
+
servicePath = join(servicesDir, serviceDir);
|
|
1005
|
+
break;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
```
|
|
1010
|
+
|
|
1011
|
+
#### **Production Test Resilience**
|
|
1012
|
+
```javascript
|
|
1013
|
+
// Wait for deployment propagation before running tests
|
|
1014
|
+
if (options.tests !== false && deploymentResult.url) {
|
|
1015
|
+
this.logOutput('⏳ Waiting for deployment to propagate...', 'info');
|
|
1016
|
+
await new Promise(resolve => setTimeout(resolve, 10000)); // 10 second delay
|
|
1017
|
+
|
|
1018
|
+
const testResult = await this.modules.productionTester.runProductionTests(deploymentUrl, options);
|
|
1019
|
+
}
|
|
1020
|
+
```
|
|
1021
|
+
|
|
1022
|
+
## 🔮 Future Improvements
|
|
1023
|
+
|
|
1024
|
+
### **Phase 1: Service Autonomy**
|
|
1025
|
+
**Goal**: Each service becomes completely autonomous
|
|
1026
|
+
|
|
1027
|
+
#### **Service-Level Integration**
|
|
1028
|
+
```javascript
|
|
1029
|
+
// Each service gets its own deployment module
|
|
1030
|
+
service-repo/
|
|
1031
|
+
├── deployment/
|
|
1032
|
+
│ ├── deploy.js # Service-specific deployment
|
|
1033
|
+
│ ├── config.js # Service deployment config
|
|
1034
|
+
│ └── validators.js # Service validation logic
|
|
1035
|
+
├── src/config/domains.js # Multi-domain configuration
|
|
1036
|
+
└── package.json # Includes clodo-framework as dependency
|
|
1037
|
+
```
|
|
1038
|
+
|
|
1039
|
+
#### **Reusable Component Library**
|
|
1040
|
+
```javascript
|
|
1041
|
+
import {
|
|
1042
|
+
DomainDiscovery,
|
|
1043
|
+
CloudflareManager,
|
|
1044
|
+
DeploymentValidator,
|
|
1045
|
+
ProductionTester
|
|
1046
|
+
} from '@tamyla/clodo-framework';
|
|
1047
|
+
|
|
1048
|
+
// Each service imports only what it needs
|
|
1049
|
+
const discovery = new DomainDiscovery({ domain: 'my-service.domain.com' });
|
|
1050
|
+
await discovery.validateCloudflareSetup();
|
|
1051
|
+
```
|
|
1052
|
+
|
|
1053
|
+
### **Phase 2: Advanced Orchestration**
|
|
1054
|
+
- **Dependency Resolution**: Services declare dependencies on other services
|
|
1055
|
+
- **Blue-Green Deployments**: Zero-downtime deployment patterns
|
|
1056
|
+
- **Canary Releases**: Gradual rollout with automatic monitoring
|
|
1057
|
+
- **Multi-Region Deployment**: Global service distribution
|
|
1058
|
+
|
|
1059
|
+
### **Phase 3: Enterprise Features**
|
|
1060
|
+
- **Service Mesh Integration**: Inter-service communication patterns
|
|
1061
|
+
- **Centralized Monitoring**: Unified observability across all services
|
|
1062
|
+
- **Policy Management**: Governance and compliance automation
|
|
1063
|
+
- **Cost Optimization**: Resource usage monitoring and optimization
|
|
1064
|
+
|
|
1065
|
+
### **Current Framework Purpose**
|
|
1066
|
+
|
|
1067
|
+
This framework currently serves as:
|
|
1068
|
+
|
|
1069
|
+
1. **Development Environment**: Understanding deployment workflows and requirements
|
|
1070
|
+
2. **Component Testing**: Validating integration patterns and error handling
|
|
1071
|
+
3. **Template Generation**: Creating reusable patterns for service codebases
|
|
1072
|
+
4. **Integration Standards**: Defining how autonomous services should operate
|
|
1073
|
+
|
|
1074
|
+
**Next Evolution**: Extract successful patterns into lightweight libraries that individual services can import and use independently.
|
|
1075
|
+
|
|
1076
|
+
## 🎉 **Recent Major Enhancement: Customer Configuration Management**
|
|
1077
|
+
|
|
1078
|
+
The Clodo Framework has successfully incorporated **enterprise-grade customer configuration management** capabilities, transforming it from a single-service framework into a **multi-customer, multi-environment enterprise platform**.
|
|
1079
|
+
|
|
1080
|
+
### ✅ **Successfully Incorporated Features**
|
|
1081
|
+
|
|
1082
|
+
#### **👥 Customer Isolation & Management**
|
|
1083
|
+
- **Multi-customer support** with isolated configuration namespaces
|
|
1084
|
+
- **Template-based customer onboarding** from reusable configuration templates
|
|
1085
|
+
- **Customer registry** with automatic domain registration
|
|
1086
|
+
- **Framework-safe design** using mock values for development/testing
|
|
1087
|
+
|
|
1088
|
+
#### **🏗️ Template-Driven Architecture**
|
|
1089
|
+
- **Environment-specific templates** (development.env.template, staging.env.template, production.env.template)
|
|
1090
|
+
- **Variable substitution** with customer-specific placeholders (`{{CUSTOMER_NAME}}`, `{{DOMAIN}}`, etc.)
|
|
1091
|
+
- **Automated configuration generation** from templates to production-ready configs
|
|
1092
|
+
- **Template inheritance** supporting cross-customer and cross-environment patterns
|
|
1093
|
+
|
|
1094
|
+
#### **🔗 Framework Integration**
|
|
1095
|
+
- **Domain system integration** - customers automatically registered as domains
|
|
1096
|
+
- **Feature flag integration** - customer-specific features managed through existing system
|
|
1097
|
+
- **Validation framework integration** - customer configs validated using existing patterns
|
|
1098
|
+
- **CLI tool integration** - customer management accessible via `npm run customer-config`
|
|
1099
|
+
|
|
1100
|
+
#### **🛠️ Developer Experience**
|
|
1101
|
+
- **CLI tools**: `create-customer`, `show`, `validate`, `list`, `deploy-command`
|
|
1102
|
+
- **Programmatic API**: Full TypeScript/JavaScript API for customer management
|
|
1103
|
+
- **Framework mode**: Mock-friendly for development without real infrastructure
|
|
1104
|
+
- **Service migration path**: Generated configs can be copied to service repositories
|
|
1105
|
+
|
|
1106
|
+
### 🚀 **Impact & Benefits**
|
|
1107
|
+
|
|
1108
|
+
#### **For Framework Users**
|
|
1109
|
+
- **Zero breaking changes** - all existing functionality preserved
|
|
1110
|
+
- **Enhanced capabilities** - framework now supports enterprise customer scenarios
|
|
1111
|
+
- **Better testing** - customer scenarios can be tested in framework environment
|
|
1112
|
+
- **Migration ready** - smooth path from framework testing to service implementation
|
|
1113
|
+
|
|
1114
|
+
#### **For Service Developers**
|
|
1115
|
+
- **Customer-ready services** - framework provides patterns for multi-customer support
|
|
1116
|
+
- **Automated onboarding** - customer setup becomes template-driven process
|
|
1117
|
+
- **Consistent patterns** - same customer management approach across all services
|
|
1118
|
+
- **Reduced duplication** - shared customer configuration logic
|
|
1119
|
+
|
|
1120
|
+
#### **For Enterprise Teams**
|
|
1121
|
+
- **Multi-customer support** - single framework handles multiple customer deployments
|
|
1122
|
+
- **Environment isolation** - separate configs for dev/staging/production per customer
|
|
1123
|
+
- **Scalable architecture** - customer management scales with business growth
|
|
1124
|
+
- **Governance & compliance** - centralized customer configuration management
|
|
1125
|
+
|
|
1126
|
+
### 📊 **Technical Implementation Highlights**
|
|
1127
|
+
|
|
1128
|
+
#### **Clean Architecture**
|
|
1129
|
+
- **Separation of concerns**: Framework provides tools, services manage customer data
|
|
1130
|
+
- **Mock-friendly**: Framework mode uses placeholders, service mode uses real values
|
|
1131
|
+
- **Composable**: Customer management integrates with existing domain/feature systems
|
|
1132
|
+
- **Testable**: Full test coverage without requiring real Cloudflare infrastructure
|
|
1133
|
+
|
|
1134
|
+
#### **Developer Workflow**
|
|
1135
|
+
```bash
|
|
1136
|
+
# Framework development/testing
|
|
1137
|
+
npm run customer-config create-customer testcorp testcorp.com
|
|
1138
|
+
npm run customer-config show testcorp production
|
|
1139
|
+
|
|
1140
|
+
# Service implementation (copy generated configs)
|
|
1141
|
+
cp config/customers/testcorp/* my-service/src/config/customers/testcorp/
|
|
1142
|
+
# Then customize for production infrastructure
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
#### **API Design**
|
|
1146
|
+
```javascript
|
|
1147
|
+
// Framework mode (mock values)
|
|
1148
|
+
const customerManager = new CustomerConfigurationManager();
|
|
1149
|
+
await customerManager.createCustomer('acmecorp', 'acmecorp.com', {
|
|
1150
|
+
skipValidation: true,
|
|
1151
|
+
isFrameworkMode: true
|
|
1152
|
+
});
|
|
1153
|
+
|
|
1154
|
+
// Service mode (real infrastructure)
|
|
1155
|
+
const customerManager = new CustomerConfigurationManager();
|
|
1156
|
+
await customerManager.createCustomer('acmecorp', 'acmecorp.com', {
|
|
1157
|
+
accountId: 'real-cloudflare-account-id',
|
|
1158
|
+
zoneId: 'real-cloudflare-zone-id'
|
|
1159
|
+
});
|
|
1160
|
+
```
|
|
1161
|
+
|
|
1162
|
+
### 🎯 **Mission Accomplished**
|
|
1163
|
+
|
|
1164
|
+
The Clodo Framework has successfully evolved from a **single-service deployment framework** into a **comprehensive enterprise platform** that supports:
|
|
1165
|
+
|
|
1166
|
+
- ✅ **Multi-service orchestration** (existing)
|
|
1167
|
+
- ✅ **Multi-environment deployment** (existing)
|
|
1168
|
+
- ✅ **Multi-customer configuration** (newly added)
|
|
1169
|
+
- ✅ **Enterprise-grade security** (existing)
|
|
1170
|
+
- ✅ **Developer experience** (enhanced)
|
|
1171
|
+
|
|
1172
|
+
This enhancement maintains backward compatibility while significantly expanding the framework's capabilities for enterprise scenarios. The customer configuration management system is now a core, production-ready feature that enables the framework to support complex, multi-customer enterprise deployments.
|
|
1173
|
+
|
|
1174
|
+
**The Clodo Framework is now ready to "snap together" not just services, but entire customer ecosystems! 🧱➡️🏢**
|
|
1175
|
+
|
|
1176
|
+
## Scripts and Tools
|
|
1177
|
+
|
|
1178
|
+
The Clodo Framework includes a comprehensive set of scripts and command-line tools, organized by functionality.
|
|
1179
|
+
|
|
1180
|
+
### Directory Structure
|
|
1181
|
+
|
|
1182
|
+
```
|
|
1183
|
+
scripts/
|
|
1184
|
+
├── service-management/ # Service creation and setup
|
|
1185
|
+
├── deployment/ # Deployment scripts
|
|
1186
|
+
├── testing/ # Testing utilities
|
|
1187
|
+
└── utilities/ # General utilities
|
|
1188
|
+
|
|
1189
|
+
bin/
|
|
1190
|
+
├── service-management/ # Service creation tools
|
|
1191
|
+
├── deployment/ # Enterprise deployment CLI
|
|
1192
|
+
├── database/ # Database management
|
|
1193
|
+
├── portfolio/ # Multi-service management
|
|
1194
|
+
└── shared/ # Shared utility modules
|
|
1195
|
+
```
|
|
1196
|
+
|
|
1197
|
+
### Service Management
|
|
1198
|
+
|
|
1199
|
+
**Create services with auto-generated configurations:**
|
|
1200
|
+
```bash
|
|
1201
|
+
# Initialize service with multi-domain support
|
|
1202
|
+
node bin/service-management/init-service.js my-service \
|
|
1203
|
+
--type api-gateway \
|
|
1204
|
+
--domains "api.example.com:account1:zone1,staging.example.com:account2:zone2"
|
|
1205
|
+
|
|
1206
|
+
# Create service from template
|
|
1207
|
+
node bin/service-management/create-service.js my-service --type data-service
|
|
1208
|
+
```
|
|
1209
|
+
|
|
1210
|
+
**Interactive setup:**
|
|
1211
|
+
```powershell
|
|
1212
|
+
.\scripts\service-management\setup-interactive.ps1 -ServiceName my-service
|
|
1213
|
+
```
|
|
1214
|
+
|
|
1215
|
+
### Deployment
|
|
1216
|
+
|
|
1217
|
+
**Enterprise deployment:**
|
|
1218
|
+
```bash
|
|
1219
|
+
node bin/deployment/enterprise-deploy.js deploy --service my-service --environment production
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
**Domain-specific deployment:**
|
|
1223
|
+
```powershell
|
|
1224
|
+
.\scripts\deployment\deploy-domain.ps1 -DomainName api.example.com -Environment production
|
|
1225
|
+
```
|
|
1226
|
+
|
|
1227
|
+
### Testing
|
|
1228
|
+
|
|
1229
|
+
**Run tests:**
|
|
1230
|
+
```powershell
|
|
1231
|
+
.\scripts\testing\test.ps1
|
|
1232
|
+
.\scripts\testing\test-first.ps1 -ServiceName my-service
|
|
1233
|
+
```
|
|
1234
|
+
|
|
1235
|
+
### Database Management
|
|
1236
|
+
|
|
1237
|
+
**Database operations:**
|
|
1238
|
+
```bash
|
|
1239
|
+
node bin/database/enterprise-db-manager.js migrate --service my-service
|
|
1240
|
+
node bin/database/enterprise-db-manager.js backup --database my-db
|
|
1241
|
+
```
|
|
1242
|
+
|
|
1243
|
+
### Portfolio Management
|
|
1244
|
+
|
|
1245
|
+
**Multi-service orchestration:**
|
|
1246
|
+
```bash
|
|
1247
|
+
node bin/portfolio/portfolio-manager.js create --name my-portfolio
|
|
1248
|
+
node bin/portfolio/portfolio-manager.js deploy --portfolio my-portfolio --environment production
|
|
1249
|
+
```
|
|
1250
|
+
|
|
1251
|
+
## 📚 Documentation & Learning Resources
|
|
1252
|
+
|
|
1253
|
+
The CLODO Framework provides comprehensive documentation designed for different learning styles and experience levels. Whether you prefer hands-on tutorials, detailed reference materials, or quick-start templates, we've got you covered.
|
|
1254
|
+
|
|
1255
|
+
### 🚀 **Quick Start Resources**
|
|
1256
|
+
|
|
1257
|
+
<table>
|
|
1258
|
+
<tr>
|
|
1259
|
+
<th>Resource</th>
|
|
1260
|
+
<th>Best For</th>
|
|
1261
|
+
<th>Time Required</th>
|
|
1262
|
+
<th>Description</th>
|
|
1263
|
+
</tr>
|
|
1264
|
+
<tr>
|
|
1265
|
+
<td><strong><a href="./docs/getting-started.md">📖 Getting Started Guide</a></strong></td>
|
|
1266
|
+
<td>New users, hands-on learners</td>
|
|
1267
|
+
<td>10-15 minutes</td>
|
|
1268
|
+
<td>Interactive tutorial with step-by-step examples and real code you can run</td>
|
|
1269
|
+
</tr>
|
|
1270
|
+
<tr>
|
|
1271
|
+
<td><strong><a href="./docs/quickstart-templates/">🏗️ Quick Start Templates</a></strong></td>
|
|
1272
|
+
<td>Immediate project needs</td>
|
|
1273
|
+
<td>5 minutes</td>
|
|
1274
|
+
<td>Ready-to-use project templates for common patterns (REST API, Auth, etc.)</td>
|
|
1275
|
+
</tr>
|
|
1276
|
+
<tr>
|
|
1277
|
+
<td><strong><a href="./docs/cli-tutorial.md">🛠️ CLI Tutorial</a></strong></td>
|
|
1278
|
+
<td>DevOps, deployment workflows</td>
|
|
1279
|
+
<td>15-20 minutes</td>
|
|
1280
|
+
<td>Interactive guide to all CLI commands with real examples and outputs</td>
|
|
1281
|
+
</tr>
|
|
1282
|
+
</table>
|
|
1283
|
+
|
|
1284
|
+
### 📖 **Comprehensive Documentation**
|
|
1285
|
+
|
|
1286
|
+
<table>
|
|
1287
|
+
<tr>
|
|
1288
|
+
<th>Documentation</th>
|
|
1289
|
+
<th>Purpose</th>
|
|
1290
|
+
<th>Target Audience</th>
|
|
1291
|
+
</tr>
|
|
1292
|
+
<tr>
|
|
1293
|
+
<td><strong><a href="./docs/api-reference.md">📚 API Reference</a></strong></td>
|
|
1294
|
+
<td>Complete technical documentation of all classes, methods, and interfaces</td>
|
|
1295
|
+
<td>Developers building with the framework</td>
|
|
1296
|
+
</tr>
|
|
1297
|
+
<tr>
|
|
1298
|
+
<td><strong><a href="./docs/examples-gallery.md">💻 Code Examples Gallery</a></strong></td>
|
|
1299
|
+
<td>Real-world code snippets and patterns for common use cases</td>
|
|
1300
|
+
<td>Developers seeking implementation patterns</td>
|
|
1301
|
+
</tr>
|
|
1302
|
+
<tr>
|
|
1303
|
+
<td><strong><a href="./docs/INTEGRATION_GUIDE.md">🔗 Integration Guide</a></strong></td>
|
|
1304
|
+
<td>Adding CLODO Framework to existing projects incrementally</td>
|
|
1305
|
+
<td>Teams with existing codebases</td>
|
|
1306
|
+
</tr>
|
|
1307
|
+
<tr>
|
|
1308
|
+
<td><strong><a href="./docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md">🏗️ Architecture Overview</a></strong></td>
|
|
1309
|
+
<td>Framework design, principles, and component relationships</td>
|
|
1310
|
+
<td>Architects and senior developers</td>
|
|
1311
|
+
</tr>
|
|
1312
|
+
</table>
|
|
1313
|
+
|
|
1314
|
+
### 🎯 **Choose Your Learning Path**
|
|
1315
|
+
|
|
1316
|
+
**👨💻 I'm new to CLODO Framework**
|
|
1317
|
+
1. Start with [Getting Started Guide](./docs/getting-started.md) (10 min interactive tutorial)
|
|
1318
|
+
2. Try a [Quick Start Template](./docs/quickstart-templates/) for your use case
|
|
1319
|
+
3. Explore the [Code Examples Gallery](./docs/examples-gallery.md) for patterns
|
|
1320
|
+
|
|
1321
|
+
**🏃♂️ I need to build something now**
|
|
1322
|
+
1. Browse [Quick Start Templates](./docs/quickstart-templates/) for your project type
|
|
1323
|
+
2. Copy the relevant template and customize
|
|
1324
|
+
3. Reference [API Documentation](./docs/api-reference.md) as needed
|
|
1325
|
+
|
|
1326
|
+
**🔧 I'm focused on deployment & operations**
|
|
1327
|
+
1. Follow the [CLI Tutorial](./docs/cli-tutorial.md) for hands-on command experience
|
|
1328
|
+
2. Review deployment patterns in [Code Examples Gallery](./docs/examples-gallery.md#deployment-patterns)
|
|
1329
|
+
3. Check [Integration Guide](./docs/INTEGRATION_GUIDE.md) for production considerations
|
|
1330
|
+
|
|
1331
|
+
**🏢 I have an existing project**
|
|
1332
|
+
1. Read the [Integration Guide](./docs/INTEGRATION_GUIDE.md) for incremental adoption strategies
|
|
1333
|
+
2. Start with utilities from [Code Examples Gallery](./docs/examples-gallery.md#utilities--helpers)
|
|
1334
|
+
3. Gradually adopt more features following the integration phases
|
|
1335
|
+
|
|
1336
|
+
**🏗️ I want to understand the architecture**
|
|
1337
|
+
1. Review [Architecture Overview](./docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md) for design philosophy
|
|
1338
|
+
2. Study [API Reference](./docs/api-reference.md) for technical depth
|
|
1339
|
+
3. Examine [Code Examples Gallery](./docs/examples-gallery.md) for implementation patterns
|
|
1340
|
+
|
|
1341
|
+
### 💡 **Documentation Features**
|
|
1342
|
+
|
|
1343
|
+
- **🎮 Interactive Examples**: All tutorials include runnable code with expected outputs
|
|
1344
|
+
- **📋 Copy-Paste Ready**: Code examples are production-ready and fully functional
|
|
1345
|
+
- **🔗 Cross-Referenced**: Documents link to each other for seamless navigation
|
|
1346
|
+
- **📱 Progressive Complexity**: Start simple, drill down as needed
|
|
1347
|
+
- **🛠️ Real-World Focus**: Examples address actual development scenarios
|
|
1348
|
+
- **⚡ Quick Reference**: Find what you need fast with clear categorization
|
|
1349
|
+
|
|
1350
|
+
### 🆘 **Need Help?**
|
|
1351
|
+
|
|
1352
|
+
- **🐛 Found an issue?** [Report a bug](https://github.com/tamyla/clodo-framework/issues/new?template=bug-report.md)
|
|
1353
|
+
- **💡 Have a suggestion?** [Request a feature](https://github.com/tamyla/clodo-framework/issues/new?template=feature-request.md)
|
|
1354
|
+
- **❓ Need specific example?** [Request documentation](https://github.com/tamyla/clodo-framework/issues/new?template=example-request.md)
|
|
1355
|
+
- **💬 Want to discuss?** [Start a discussion](https://github.com/tamyla/clodo-framework/discussions)
|
|
1356
|
+
|
|
1357
|
+
> **🎯 Pro Tip**: Bookmark the [API Reference](./docs/api-reference.md) and [Code Examples Gallery](./docs/examples-gallery.md) - they're designed as quick-reference resources you'll return to frequently during development.
|
|
1358
|
+
|
|
1359
|
+
## Development
|
|
1360
|
+
|
|
1361
|
+
### Building the Framework
|
|
1362
|
+
|
|
1363
|
+
```bash
|
|
1364
|
+
npm run build
|
|
1365
|
+
```
|
|
1366
|
+
|
|
1367
|
+
### Running Tests
|
|
1368
|
+
|
|
1369
|
+
```bash
|
|
1370
|
+
npm test
|
|
1371
|
+
```
|
|
1372
|
+
|
|
1373
|
+
### Linting
|
|
1374
|
+
|
|
1375
|
+
```bash
|
|
1376
|
+
npm run lint
|
|
1377
|
+
```
|
|
1378
|
+
|
|
1379
|
+
## Contributing
|
|
1380
|
+
|
|
1381
|
+
1. Fork the repository
|
|
1382
|
+
2. Create a feature branch
|
|
1383
|
+
3. Make your changes
|
|
1384
|
+
4. Add tests
|
|
1385
|
+
5. Submit a pull request
|
|
1386
|
+
|
|
1387
|
+
## License
|
|
1388
|
+
|
|
1389
|
+
MIT License - see LICENSE file for details
|
|
1390
|
+
|
|
1391
|
+
## Support
|
|
1392
|
+
|
|
1393
|
+
For questions and support, please open an issue on GitHub or contact the maintainers.
|