@idealyst/cli 1.0.30 → 1.0.32

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idealyst/cli",
3
- "version": "1.0.30",
3
+ "version": "1.0.32",
4
4
  "description": "CLI tool for generating Idealyst Framework projects",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Idealyst Development Environment",
3
- "dockerComposeFile": ["../docker-compose.yml"],
3
+ "dockerComposeFile": ["./docker-compose.yml"],
4
4
  "service": "dev",
5
5
  "workspaceFolder": "/app",
6
6
  "shutdownAction": "stopCompose",
@@ -13,8 +13,8 @@
13
13
  "typescript.preferences.includePackageJsonAutoImports": "auto",
14
14
  "editor.formatOnSave": true,
15
15
  "editor.codeActionsOnSave": {
16
- "source.fixAll.eslint": true,
17
- "source.organizeImports": true
16
+ "source.fixAll.eslint": "explicit",
17
+ "source.organizeImports": "explicit"
18
18
  },
19
19
  "files.watcherExclude": {
20
20
  "**/node_modules/**": true,
@@ -65,11 +65,6 @@
65
65
 
66
66
  // Development container features
67
67
  "features": {
68
- "ghcr.io/devcontainers/features/node:1": {
69
- "version": "20",
70
- "nodeGypDependencies": true,
71
- "installYarnUsingApt": true
72
- },
73
68
  "ghcr.io/devcontainers/features/git:1": {
74
69
  "ppa": true,
75
70
  "version": "latest"
@@ -77,10 +72,6 @@
77
72
  "ghcr.io/devcontainers/features/github-cli:1": {
78
73
  "version": "latest"
79
74
  },
80
- "ghcr.io/devcontainers/features/docker-in-docker:2": {
81
- "moby": true,
82
- "dockerDashComposeVersion": "v2"
83
- },
84
75
  "ghcr.io/devcontainers/features/common-utils:2": {
85
76
  "installZsh": true,
86
77
  "configureZshAsDefaultShell": true,
@@ -144,7 +135,6 @@
144
135
 
145
136
  // Mount the workspace with proper permissions
146
137
  "mounts": [
147
- "source=${localWorkspaceFolder},target=/app,type=bind,consistency=cached",
148
- "source=idealyst-node-modules,target=/app/node_modules,type=volume"
138
+ "source=${localWorkspaceFolder},target=/app,type=bind,consistency=cached"
149
139
  ]
150
140
  }
@@ -0,0 +1,74 @@
1
+ services:
2
+ # PostgreSQL Database
3
+ postgres:
4
+ image: postgres:15-alpine
5
+ container_name: ${PROJECT_NAME:-truday}-postgres
6
+ environment:
7
+ POSTGRES_DB: ${POSTGRES_DB:-idealyst_db}
8
+ POSTGRES_USER: ${POSTGRES_USER:-postgres}
9
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
10
+ ports:
11
+ - "${POSTGRES_PORT:-5432}:5432"
12
+ volumes:
13
+ - postgres_data:/var/lib/postgresql/data
14
+ - ../docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
15
+ healthcheck:
16
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
17
+ interval: 30s
18
+ timeout: 10s
19
+ retries: 5
20
+ networks:
21
+ - idealyst-network
22
+
23
+ # Redis Cache
24
+ redis:
25
+ image: redis:7-alpine
26
+ container_name: ${PROJECT_NAME:-truday}-redis
27
+ ports:
28
+ - "${REDIS_PORT:-6379}:6379"
29
+ volumes:
30
+ - redis_data:/data
31
+ healthcheck:
32
+ test: ["CMD", "redis-cli", "ping"]
33
+ interval: 30s
34
+ timeout: 10s
35
+ retries: 5
36
+ networks:
37
+ - idealyst-network
38
+
39
+ # Development Service (for devcontainer)
40
+ dev:
41
+ build:
42
+ context: ..
43
+ dockerfile: Dockerfile
44
+ target: dev
45
+ container_name: ${PROJECT_NAME:-truday}-dev
46
+ environment:
47
+ NODE_ENV: development
48
+ ports:
49
+ - "3000:3000" # Web dev server
50
+ - "3001:3001" # API dev server
51
+ - "5173:5173" # Vite dev server
52
+ - "8080:8080" # Additional dev server
53
+ - "19006:19006" # Expo dev tools
54
+ volumes:
55
+ - ..:/app
56
+ - /app/node_modules
57
+ - /var/run/docker.sock:/var/run/docker.sock:ro
58
+ depends_on:
59
+ postgres:
60
+ condition: service_healthy
61
+ redis:
62
+ condition: service_healthy
63
+ networks:
64
+ - idealyst-network
65
+ tty: true
66
+ stdin_open: true
67
+
68
+ volumes:
69
+ postgres_data:
70
+ redis_data:
71
+
72
+ networks:
73
+ idealyst-network:
74
+ driver: bridge
@@ -6,6 +6,9 @@ echo "🚀 Setting up Idealyst development environment..."
6
6
  # Set proper permissions
7
7
  sudo chown -R devuser:devuser /app
8
8
 
9
+ # Make scripts executable
10
+ chmod +x /app/scripts/*.sh
11
+
9
12
  # Install dependencies if not already installed
10
13
  if [ ! -d "/app/node_modules" ]; then
11
14
  echo "📦 Installing dependencies..."
@@ -83,47 +86,4 @@ fi
83
86
  echo "⚡ Setting up helpful aliases..."
84
87
  cat >> ~/.bashrc << EOF
85
88
 
86
- # Idealyst Development Aliases
87
- alias dev-web='cd /app && yarn workspace web dev'
88
- alias dev-api='cd /app && yarn workspace api dev'
89
- alias test-all='cd /app && yarn test'
90
- alias build-all='cd /app && yarn build:all'
91
- alias lint-all='cd /app && yarn lint:all'
92
-
93
- # Docker aliases
94
- alias dc='docker-compose'
95
- alias dcu='docker-compose up'
96
- alias dcd='docker-compose down'
97
- alias dcl='docker-compose logs'
98
-
99
- # Git aliases
100
- alias gs='git status'
101
- alias ga='git add'
102
- alias gc='git commit'
103
- alias gp='git push'
104
- alias gl='git pull'
105
-
106
- echo "🎉 Idealyst development environment is ready!"
107
- echo ""
108
- echo "Available commands:"
109
- echo " dev-web - Start web development server"
110
- echo " dev-api - Start API development server"
111
- echo " test-all - Run all tests"
112
- echo " build-all - Build all packages"
113
- echo " lint-all - Lint all packages"
114
- echo ""
115
- echo "Database: postgresql://postgres:postgres@postgres:5432/idealyst_db"
116
- echo "Redis: redis://redis:6379"
117
- echo ""
118
- EOF
119
-
120
- source ~/.bashrc
121
-
122
- echo "🎉 Development environment setup complete!"
123
- echo ""
124
- echo "Quick start:"
125
- echo " 1. Run 'dev-web' to start the web development server"
126
- echo " 2. Run 'dev-api' to start the API server"
127
- echo " 3. Open http://localhost:3000 to view your app"
128
- echo ""
129
- echo "Happy coding! 🚀"
89
+ source ~/.bashrc
@@ -87,7 +87,7 @@ LICENSE
87
87
 
88
88
  # Package manager files
89
89
  package-lock.json
90
- yarn.lock
90
+ # yarn.lock - DO NOT IGNORE: Required for immutable installs
91
91
  pnpm-lock.yaml
92
92
 
93
93
  # Development scripts
@@ -1,385 +0,0 @@
1
- # Docker Configuration Guide
2
-
3
- This workspace includes comprehensive Docker support for development, staging, and production environments.
4
-
5
- ## Quick Start
6
-
7
- ### Development Environment
8
- ```bash
9
- # Copy environment file
10
- cp .env.example .env
11
-
12
- # Start development environment
13
- ./scripts/docker/deploy.sh development
14
-
15
- # Or use Docker Compose directly
16
- docker-compose up -d dev
17
- ```
18
-
19
- ### Production Deployment
20
- ```bash
21
- # Copy and configure production environment
22
- cp .env.production .env
23
- # Edit .env with your production settings
24
-
25
- # Deploy to production
26
- ./scripts/docker/deploy.sh production
27
- ```
28
-
29
- ## Architecture
30
-
31
- ### Services Overview
32
- - **postgres**: PostgreSQL database with initialization scripts
33
- - **redis**: Redis cache for sessions and caching
34
- - **api**: Backend API service
35
- - **web**: Frontend web application
36
- - **nginx**: Reverse proxy and load balancer (production)
37
- - **dev**: Development container with all tools
38
- - **test**: Test runner container
39
-
40
- ### Development vs Production
41
-
42
- #### Development
43
- - Single container with all development tools
44
- - File watching and hot reload
45
- - Debug logging enabled
46
- - Development database
47
-
48
- #### Production
49
- - Multi-container architecture
50
- - Optimized builds
51
- - Load balancing with Nginx
52
- - Health checks and monitoring
53
- - Secure configurations
54
-
55
- ## File Structure
56
-
57
- ```
58
- workspace/
59
- ├── Dockerfile # Multi-stage Dockerfile
60
- ├── docker-compose.yml # Main compose configuration
61
- ├── docker-compose.prod.yml # Production overrides
62
- ├── .dockerignore # Build context exclusions
63
- ├── .env.example # Development environment template
64
- ├── .env.production # Production environment template
65
- ├── .devcontainer/ # VS Code dev container config
66
- │ ├── devcontainer.json
67
- │ └── post-create.sh
68
- ├── docker/ # Docker configuration files
69
- │ ├── nginx.conf # Development nginx config
70
- │ ├── nginx/
71
- │ │ └── prod.conf # Production nginx config
72
- │ ├── postgres/
73
- │ │ └── init.sql # Database initialization
74
- │ └── prometheus/
75
- │ └── prometheus.yml # Monitoring configuration
76
- └── scripts/docker/ # Management scripts
77
- ├── deploy.sh # Deployment script
78
- └── db-backup.sh # Database backup/restore
79
- ```
80
-
81
- ## Environment Configuration
82
-
83
- ### Required Environment Variables
84
-
85
- ```bash
86
- # Project
87
- PROJECT_NAME=your-project-name
88
-
89
- # Database
90
- POSTGRES_DB=your_database
91
- POSTGRES_USER=your_user
92
- POSTGRES_PASSWORD=strong_password
93
-
94
- # API
95
- JWT_SECRET=very_strong_jwt_secret
96
- API_PORT=3001
97
-
98
- # Web
99
- WEB_PORT=80
100
- ```
101
-
102
- ### Security Considerations
103
-
104
- For production, ensure you:
105
- 1. Change all default passwords
106
- 2. Use strong, unique secrets
107
- 3. Configure SSL certificates
108
- 4. Set up proper firewall rules
109
- 5. Enable monitoring and logging
110
-
111
- ## Development Container
112
-
113
- ### VS Code Integration
114
-
115
- The workspace includes a complete VS Code dev container configuration:
116
-
117
- 1. **Open in VS Code**: Use "Reopen in Container" when prompted
118
- 2. **Automatic Setup**: Dependencies and tools are installed automatically
119
- 3. **Database**: PostgreSQL and Redis are available immediately
120
- 4. **Port Forwarding**: All development ports are automatically forwarded
121
-
122
- ### Features Included
123
- - Node.js 20 with Yarn
124
- - TypeScript and development tools
125
- - Git and GitHub CLI
126
- - Docker-in-Docker support
127
- - VS Code extensions for React, TypeScript, and more
128
-
129
- ### Manual Setup
130
- ```bash
131
- # Start dev container
132
- docker-compose up -d dev
133
-
134
- # Access the container
135
- docker-compose exec dev bash
136
-
137
- # Install dependencies (if not already done)
138
- yarn install
139
-
140
- # Start development servers
141
- yarn dev
142
- ```
143
-
144
- ## Deployment Scripts
145
-
146
- ### Deploy Script (`./scripts/docker/deploy.sh`)
147
-
148
- ```bash
149
- # Development
150
- ./scripts/docker/deploy.sh development
151
-
152
- # Production
153
- ./scripts/docker/deploy.sh production
154
-
155
- # View status
156
- ./scripts/docker/deploy.sh status
157
-
158
- # View logs
159
- ./scripts/docker/deploy.sh logs
160
-
161
- # Stop all services
162
- ./scripts/docker/deploy.sh stop
163
-
164
- # Clean up everything
165
- ./scripts/docker/deploy.sh clean
166
- ```
167
-
168
- ### Database Management (`./scripts/docker/db-backup.sh`)
169
-
170
- ```bash
171
- # Create backup
172
- ./scripts/docker/db-backup.sh backup
173
-
174
- # Restore backup
175
- ./scripts/docker/db-backup.sh restore backups/backup-file.sql
176
-
177
- # List backups
178
- ./scripts/docker/db-backup.sh list
179
-
180
- # Clean old backups
181
- ./scripts/docker/db-backup.sh clean 30
182
-
183
- # Show database info
184
- ./scripts/docker/db-backup.sh info
185
- ```
186
-
187
- ## Production Deployment
188
-
189
- ### Prerequisites
190
- 1. Docker and Docker Compose installed
191
- 2. Domain name configured
192
- 3. SSL certificates (Let's Encrypt recommended)
193
- 4. Environment variables configured
194
-
195
- ### Steps
196
- 1. **Prepare Environment**
197
- ```bash
198
- cp .env.production .env
199
- # Edit .env with your settings
200
- ```
201
-
202
- 2. **Deploy**
203
- ```bash
204
- ./scripts/docker/deploy.sh production
205
- ```
206
-
207
- 3. **Configure SSL** (if using Let's Encrypt)
208
- ```bash
209
- # Install certbot
210
- docker run -it --rm \
211
- -v /etc/letsencrypt:/etc/letsencrypt \
212
- -v /var/lib/letsencrypt:/var/lib/letsencrypt \
213
- certbot/certbot certonly --standalone \
214
- -d yourdomain.com
215
-
216
- # Copy certificates
217
- mkdir -p docker/nginx/ssl
218
- cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem docker/nginx/ssl/cert.pem
219
- cp /etc/letsencrypt/live/yourdomain.com/privkey.pem docker/nginx/ssl/key.pem
220
- ```
221
-
222
- 4. **Restart with SSL**
223
- ```bash
224
- docker-compose -f docker-compose.yml -f docker-compose.prod.yml restart nginx
225
- ```
226
-
227
- ### Scaling Services
228
-
229
- ```bash
230
- # Scale API service
231
- docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --scale api=3
232
-
233
- # Scale web service
234
- docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --scale web=2
235
- ```
236
-
237
- ## Monitoring and Logging
238
-
239
- ### Built-in Monitoring (Optional)
240
- - **Prometheus**: Metrics collection (http://localhost:9090)
241
- - **Grafana**: Visualization dashboard (http://localhost:3002)
242
-
243
- ```bash
244
- # Start with monitoring
245
- docker-compose --profile monitoring -f docker-compose.yml -f docker-compose.prod.yml up -d
246
- ```
247
-
248
- ### Log Management
249
- ```bash
250
- # View logs for all services
251
- docker-compose logs -f
252
-
253
- # View logs for specific service
254
- docker-compose logs -f api
255
-
256
- # Export logs
257
- docker-compose logs --no-color > application.log
258
- ```
259
-
260
- ### Health Checks
261
- All services include health checks:
262
- - API: `/health` endpoint
263
- - Web: HTTP status check
264
- - Database: `pg_isready` check
265
- - Redis: `redis-cli ping` check
266
-
267
- ## Troubleshooting
268
-
269
- ### Common Issues
270
-
271
- 1. **Port Conflicts**
272
- ```bash
273
- # Check what's using the port
274
- lsof -i :3000
275
-
276
- # Change port in .env file
277
- WEB_PORT=3001
278
- ```
279
-
280
- 2. **Database Connection Issues**
281
- ```bash
282
- # Check database logs
283
- docker-compose logs postgres
284
-
285
- # Test connection
286
- docker-compose exec postgres psql -U postgres -d idealyst_db
287
- ```
288
-
289
- 3. **Build Failures**
290
- ```bash
291
- # Clean build cache
292
- docker system prune -a
293
-
294
- # Rebuild without cache
295
- docker-compose build --no-cache
296
- ```
297
-
298
- 4. **Permission Issues**
299
- ```bash
300
- # Fix file permissions
301
- sudo chown -R $USER:$USER .
302
-
303
- # Reset container permissions
304
- docker-compose down
305
- docker-compose up -d
306
- ```
307
-
308
- ### Debugging
309
-
310
- ```bash
311
- # Access running container
312
- docker-compose exec api bash
313
- docker-compose exec web sh
314
-
315
- # Run commands in container
316
- docker-compose exec api yarn test
317
- docker-compose exec api npm run migrate
318
-
319
- # Check service status
320
- docker-compose ps
321
- docker-compose top
322
- ```
323
-
324
- ## Performance Optimization
325
-
326
- ### Production Optimizations
327
- - Multi-stage builds reduce image size
328
- - Nginx caching for static assets
329
- - Gzip compression enabled
330
- - Connection pooling for database
331
- - Health checks for reliability
332
-
333
- ### Development Optimizations
334
- - Volume mounts for hot reload
335
- - Development dependencies included
336
- - Debug logging enabled
337
- - File watching optimized
338
-
339
- ## Security Best Practices
340
-
341
- 1. **Never commit `.env` files**
342
- 2. **Use strong, unique passwords**
343
- 3. **Rotate secrets regularly**
344
- 4. **Enable SSL in production**
345
- 5. **Configure firewalls properly**
346
- 6. **Regular security updates**
347
- 7. **Monitor logs for suspicious activity**
348
-
349
- ## Backup and Recovery
350
-
351
- ### Automated Backups
352
- ```bash
353
- # Setup cron job for daily backups
354
- 0 2 * * * /path/to/workspace/scripts/docker/db-backup.sh backup
355
- 0 3 * * 0 /path/to/workspace/scripts/docker/db-backup.sh clean 30
356
- ```
357
-
358
- ### Disaster Recovery
359
- 1. **Data Backup**: Regular database and file backups
360
- 2. **Image Registry**: Push images to Docker registry
361
- 3. **Configuration Backup**: Version control all configs
362
- 4. **Documentation**: Keep deployment notes updated
363
-
364
- ## Updates and Maintenance
365
-
366
- ### Updating Services
367
- ```bash
368
- # Pull latest images
369
- docker-compose pull
370
-
371
- # Rebuild and restart
372
- docker-compose up -d --build
373
-
374
- # Clean old images
375
- docker image prune
376
- ```
377
-
378
- ### Database Migrations
379
- ```bash
380
- # Run migrations
381
- docker-compose exec api yarn migrate
382
-
383
- # Rollback if needed
384
- docker-compose exec api yarn migrate:rollback
385
- ```
@@ -2,8 +2,11 @@
2
2
  # Supports web apps, API services, and can be used for staging/production
3
3
 
4
4
  # Base stage with Node.js and build tools
5
- FROM node:20-alpine AS base
6
- RUN apk add --no-cache libc6-compat git
5
+ FROM node:20-bullseye-slim AS base
6
+ RUN apt-get update && apt-get install -y \
7
+ libc6-dev \
8
+ git \
9
+ && rm -rf /var/lib/apt/lists/*
7
10
  WORKDIR /app
8
11
 
9
12
  # Enable corepack for yarn
@@ -11,9 +14,17 @@ RUN corepack enable
11
14
 
12
15
  # Dependencies stage - install all dependencies
13
16
  FROM base AS deps
14
- COPY package.json yarn.lock* .yarnrc.yml ./
17
+ COPY package.json yarn.lock .yarnrc.yml ./
15
18
  COPY .yarn .yarn
16
- RUN yarn install --immutable
19
+
20
+ # Create packages directory structure and copy package.json files
21
+ RUN mkdir -p packages/api packages/app packages/components packages/web
22
+ COPY packages/api/package.json ./packages/api/
23
+ COPY packages/app/package.json ./packages/app/
24
+ COPY packages/components/package.json ./packages/components/
25
+ COPY packages/web/package.json ./packages/web/
26
+
27
+ RUN yarn install
17
28
 
18
29
  # Build stage - build all packages
19
30
  FROM base AS builder
@@ -54,39 +65,21 @@ CMD ["nginx", "-g", "daemon off;"]
54
65
 
55
66
  # Development stage - for use with dev containers
56
67
  FROM base AS dev
57
- RUN apk add --no-cache \
58
- docker \
59
- docker-compose \
60
- bash \
61
- zsh \
62
- fish \
63
- git \
64
- curl \
65
- wget \
66
- vim \
67
- nano
68
-
69
- # Install global development tools
70
- RUN npm install -g @types/node typescript ts-node nodemon
71
68
 
72
69
  # Copy package files
73
- COPY package.json yarn.lock* .yarnrc.yml ./
70
+ COPY package.json yarn.lock .yarnrc.yml ./
74
71
  COPY .yarn .yarn
75
72
 
73
+ # Create packages directory structure and copy package.json files
74
+ RUN mkdir -p packages/api packages/app packages/components packages/web
75
+ COPY packages/api/package.json ./packages/api/
76
+ COPY packages/app/package.json ./packages/app/
77
+ COPY packages/components/package.json ./packages/components/
78
+ COPY packages/web/package.json ./packages/web/
79
+
76
80
  # Install dependencies including dev dependencies
77
81
  RUN yarn install
78
82
 
79
- # Create non-root user for development
80
- RUN addgroup --system --gid 1001 devuser
81
- RUN adduser --system --uid 1001 --ingroup devuser devuser
82
- RUN chown -R devuser:devuser /app
83
-
84
- USER devuser
85
-
86
- # Set up shell
87
- RUN echo 'alias ll="ls -la"' >> ~/.bashrc
88
- RUN echo 'alias la="ls -la"' >> ~/.bashrc
89
-
90
83
  EXPOSE 3000 3001 5173 8080 19006
91
84
 
92
85
  CMD ["tail", "-f", "/dev/null"]