-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnew-project.sh
More file actions
executable file
·104 lines (91 loc) · 2.64 KB
/
Copy pathnew-project.sh
File metadata and controls
executable file
·104 lines (91 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
# ============================================================
# Create a new project and deploy it
# Usage: ./new-project.sh <project-name> [port]
# Example: ./new-project.sh myapp 3000
# ============================================================
set -e
PROJECT_NAME="${1}"
PROJECT_PORT="${2:-3000}"
BASE_DIR="/home/elkayam/dev-env"
PROJECT_DIR="$BASE_DIR/projects/$PROJECT_NAME"
NGINX_AVAILABLE="/etc/nginx/sites-available"
NGINX_ENABLED="/etc/nginx/sites-enabled"
SUBDOMAIN_SUFFIX="apps.elkayam.me"
if [ -z "$PROJECT_NAME" ]; then
echo "Usage: $0 <project-name> [port]"
echo "Example: $0 myapp 3000"
echo ""
echo "Creates project at: $BASE_DIR/projects/"
echo "Accessible at: https://$PROJECT_NAME.apps.elkayam.me"
exit 1
fi
if [ -d "$PROJECT_DIR" ]; then
echo "Project '$PROJECT_NAME' already exists at $PROJECT_DIR"
exit 1
fi
echo "Creating project: $PROJECT_NAME"
echo "============================"
# 1. Create project directory
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
# 2. Create .gitignore
cat > .gitignore << 'EOF'
node_modules/
.env
dist/
build/
.DS_Store
EOF
# 3. Create Dockerfile template
cat > Dockerfile << 'EOF'
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
EOF
# 4. Create project docker-compose
cat > docker-compose.yml << EOF
version: '3.8'
services:
app:
build: .
container_name: ${PROJECT_NAME}
restart: unless-stopped
ports:
- "127.0.0.1:${PROJECT_PORT}:3000"
volumes:
- .:/app
environment:
- NODE_ENV=production
EOF
# 5. Set up nginx config
cp "$BASE_DIR/nginx-project-template.conf" "$NGINX_AVAILABLE/${PROJECT_NAME}.apps.elkayam.me.conf"
sed -i "s/{{PROJECT_NAME}}/$PROJECT_NAME/g; s/{{PROJECT_PORT}}/$PROJECT_PORT/g" "$NGINX_AVAILABLE/${PROJECT_NAME}.apps.elkayam.me.conf"
ln -sf "$NGINX_AVAILABLE/${PROJECT_NAME}.apps.elkayam.me.conf" "$NGINX_ENABLED/"
nginx -t && systemctl reload nginx 2>/dev/null || true
# 6. Initialize git
git init
git add .
git commit -m "Initial project setup"
echo ""
echo "========================================"
echo " Project Created: $PROJECT_NAME"
echo "========================================"
echo ""
echo " Location: $PROJECT_DIR"
echo " Subdomain: https://$PROJECT_NAME.apps.elkayam.me"
echo " Port: $PROJECT_PORT"
echo ""
echo "Next steps:"
echo " 2. cd $PROJECT_DIR"
echo " 3. npm init (or set up your project)"
echo " 4. docker compose up -d --build"
echo " 5. Visit https://$PROJECT_NAME.apps.elkayam.me"
echo ""
echo "Connect to GitHub:"
echo " git remote add origin https://github.com/YOUR_USER/$PROJECT_NAME.git"
echo " git push -u origin main"