@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 +1 -1
- package/package.json +1 -1
- package/scripts/deploy.sh +100 -32
package/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SpecGen App - Complete Platform
|
2
2
|
|
3
|
-
[](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
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
479
|
-
|
480
|
-
|
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
|
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
|
-
|
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
|