@gv-sh/specgen-app 0.8.0 โ†’ 0.9.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SpecGen App - Complete Platform
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.8.0-blue.svg)](https://github.com/gv-sh/specgen-app)
3
+ [![Version](https://img.shields.io/badge/version-0.9.0-blue.svg)](https://github.com/gv-sh/specgen-app)
4
4
 
5
5
  A unified deployment package for the SpecGen speculative fiction generator platform. **Optimized for port 80 deployment with low memory usage.**
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gv-sh/specgen-app",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Complete SpecGen application with server, admin, and user interfaces",
5
5
  "main": "index.js",
6
6
  "bin": {
package/scripts/deploy.sh CHANGED
@@ -37,15 +37,61 @@ PLATFORM=$(uname -s)
37
37
  if [ "$PLATFORM" = "Darwin" ]; then
38
38
  echo "๐ŸŽ Detected macOS"
39
39
  PM2_CMD="npx pm2"
40
- BIND_HOST="127.0.0.1" # macOS - bind to localhost for testing
40
+ DEFAULT_BIND_HOST="127.0.0.1" # macOS - default to localhost
41
41
  elif [ "$PLATFORM" = "Linux" ]; then
42
42
  echo "๐Ÿง Detected Linux"
43
43
  PM2_CMD="npx pm2"
44
- BIND_HOST="0.0.0.0" # Linux - bind to all interfaces for public access
44
+ DEFAULT_BIND_HOST="0.0.0.0" # Linux - default to public access
45
45
  else
46
46
  echo "โš ๏ธ Unknown platform: $PLATFORM"
47
47
  PM2_CMD="npx pm2"
48
- BIND_HOST="0.0.0.0"
48
+ DEFAULT_BIND_HOST="0.0.0.0"
49
+ fi
50
+
51
+ # Let user choose host binding unless in dry-run mode
52
+ if [ "$DRY_RUN" = true ]; then
53
+ BIND_HOST="$DEFAULT_BIND_HOST"
54
+ echo "๐Ÿงช DRY RUN: Using default host binding ($BIND_HOST)"
55
+ else
56
+ echo ""
57
+ echo "๐ŸŒ Choose server binding option:"
58
+ echo " 1) 0.0.0.0 - Public access (accessible from any IP)"
59
+ echo " 2) 127.0.0.1 - Local only (localhost access only)"
60
+ echo " 3) Custom IP address"
61
+ echo ""
62
+ echo "Default for $PLATFORM: $DEFAULT_BIND_HOST"
63
+ echo -n "Enter choice (1-3) or press Enter for default: "
64
+ read -r HOST_CHOICE
65
+
66
+ case "$HOST_CHOICE" in
67
+ 1)
68
+ BIND_HOST="0.0.0.0"
69
+ echo "โœ… Selected: Public access (0.0.0.0)"
70
+ ;;
71
+ 2)
72
+ BIND_HOST="127.0.0.1"
73
+ echo "โœ… Selected: Local only (127.0.0.1)"
74
+ ;;
75
+ 3)
76
+ echo -n "Enter custom IP address: "
77
+ read -r CUSTOM_HOST
78
+ if [ -n "$CUSTOM_HOST" ]; then
79
+ BIND_HOST="$CUSTOM_HOST"
80
+ echo "โœ… Selected: Custom host ($BIND_HOST)"
81
+ else
82
+ BIND_HOST="$DEFAULT_BIND_HOST"
83
+ echo "โœ… Using default: $BIND_HOST"
84
+ fi
85
+ ;;
86
+ "")
87
+ BIND_HOST="$DEFAULT_BIND_HOST"
88
+ echo "โœ… Using default: $BIND_HOST"
89
+ ;;
90
+ *)
91
+ echo "โš ๏ธ Invalid choice, using default: $DEFAULT_BIND_HOST"
92
+ BIND_HOST="$DEFAULT_BIND_HOST"
93
+ ;;
94
+ esac
49
95
  fi
50
96
 
51
97
  echo "๐ŸŒ Server will bind to: $BIND_HOST"
@@ -350,9 +396,9 @@ for component in admin user; do
350
396
  fi
351
397
  done
352
398
 
353
- npm install --no-save serve
399
+ # No need to install serve - using unified server only
354
400
 
355
- # ========================================
401
+ # ====================== ==================
356
402
  # VERIFY BUILDS
357
403
  # ========================================
358
404
 
@@ -404,8 +450,13 @@ else
404
450
  mkdir -p logs
405
451
  cp server/.env .env 2>/dev/null || true
406
452
 
407
- # Grant Node permission to bind to port 80
408
- sudo setcap 'cap_net_bind_service=+ep' "$(which node)"
453
+ # Grant Node permission to bind to port 80 (Linux only)
454
+ if [ "$PLATFORM" = "Linux" ]; then
455
+ echo "๐Ÿ” Granting Node.js permission to bind to port 80..."
456
+ sudo setcap 'cap_net_bind_service=+ep' "$(which node)" 2>/dev/null || {
457
+ echo "โš ๏ธ Could not set capabilities. You may need to run as root or use a port > 1024"
458
+ }
459
+ fi
409
460
 
410
461
  # Load environment variables from .env
411
462
  set -o allexport
@@ -433,24 +484,6 @@ module.exports = {
433
484
  log_file: '$PROJECT_DIR/logs/combined.log',
434
485
  time: true,
435
486
  watch: false
436
- },
437
- {
438
- name: 'specgen-admin',
439
- script: 'npx',
440
- args: 'serve -s admin/build -l 5001',
441
- cwd: '$PROJECT_DIR',
442
- env: {
443
- NODE_ENV: 'production'
444
- }
445
- },
446
- {
447
- name: 'specgen-user',
448
- script: 'npx',
449
- args: 'serve -s user/build -l 5002',
450
- cwd: '$PROJECT_DIR',
451
- env: {
452
- NODE_ENV: 'production'
453
- }
454
487
  }
455
488
  ]
456
489
  }
@@ -466,25 +499,60 @@ EOF
466
499
 
467
500
  NODE_ENV=production PORT=80 HOST=$BIND_HOST $PM2_CMD start ecosystem.config.js
468
501
 
469
- sleep 5
502
+ echo "โฑ๏ธ Waiting for server to start..."
503
+ sleep 8
504
+
505
+ # Verify the server is actually responding
506
+ echo "๐Ÿ” Verifying server health..."
507
+ HEALTH_CHECK=false
508
+ for i in {1..10}; do
509
+ if curl -s http://localhost:80/api/health >/dev/null 2>&1; then
510
+ HEALTH_CHECK=true
511
+ break
512
+ fi
513
+ echo " Attempt $i/10: Server not ready yet..."
514
+ sleep 2
515
+ done
470
516
 
471
- if $PM2_CMD list | grep -q "online"; then
517
+ if $PM2_CMD list | grep -q "online" && [ "$HEALTH_CHECK" = true ]; then
472
518
  PUBLIC_IP=$(curl -s ifconfig.me 2>/dev/null || echo 'your-server')
473
519
 
474
520
  echo ""
475
521
  echo "๐ŸŽ‰ SpecGen deployment completed!"
476
522
  echo ""
477
523
  echo "๐ŸŒ Access your application at:"
478
- echo " - Main page: http://$PUBLIC_IP:80/"
479
- echo " - User app: http://$PUBLIC_IP:80/app/"
480
- echo " - Admin panel: http://$PUBLIC_IP:80/admin/"
524
+ if [ "$BIND_HOST" = "0.0.0.0" ]; then
525
+ echo " - Main page: http://$PUBLIC_IP/"
526
+ echo " - User app: http://$PUBLIC_IP/app"
527
+ echo " - Admin panel: http://$PUBLIC_IP/admin"
528
+ echo " - API docs: http://$PUBLIC_IP/api-docs"
529
+ echo " - Health check: http://$PUBLIC_IP/api/health"
530
+ else
531
+ echo " - Main page: http://localhost/"
532
+ echo " - User app: http://localhost/app"
533
+ echo " - Admin panel: http://localhost/admin"
534
+ echo " - API docs: http://localhost/api-docs"
535
+ echo " - Health check: http://localhost/api/health"
536
+ fi
481
537
  echo ""
482
- echo "๐Ÿ”ง Binding: Server is bound to $BIND_HOST (${BIND_HOST:+publicly accessible})"
538
+ echo "๐Ÿ”ง Binding: Server is bound to $BIND_HOST"
483
539
  echo "๐Ÿ“Š Management: npx pm2 status | npx pm2 logs specgen"
540
+ echo ""
541
+ echo "โœ… All services are running and responding!"
484
542
 
485
543
  else
544
+ echo ""
486
545
  echo "โŒ Deployment failed!"
487
- $PM2_CMD logs specgen --lines 10
546
+ echo "๐Ÿ” Process status:"
547
+ $PM2_CMD list
548
+ echo ""
549
+ echo "๐Ÿ“ Recent logs:"
550
+ $PM2_CMD logs specgen --lines 20
551
+ echo ""
552
+ echo "๐Ÿ”ง Debug commands:"
553
+ echo " npx pm2 logs specgen"
554
+ echo " npx pm2 restart specgen"
555
+ echo " curl http://localhost:80/api/health"
488
556
  exit 1
489
557
  fi
490
558
  fi