create-vitnode-app 0.1.6 → 1.2.0-canary.1

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.
Files changed (94) hide show
  1. package/{templates → copy-of-vitnode-app}/eslint/.prettierrc.mjs +1 -1
  2. package/{templates/eslint/apps/frontend → copy-of-vitnode-app/eslint}/eslint.config.mjs +1 -2
  3. package/copy-of-vitnode-app/root/next.config.ts +11 -0
  4. package/{templates/basic/apps/frontend → copy-of-vitnode-app/root}/postcss.config.mjs +1 -2
  5. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/[...rest]/page.tsx +5 -0
  6. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/layout.tsx +10 -0
  7. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/not-found.tsx +5 -0
  8. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/page.tsx +113 -0
  9. package/copy-of-vitnode-app/root/src/app/[locale]/admin/(auth)/layout.tsx +7 -0
  10. package/copy-of-vitnode-app/root/src/app/[locale]/admin/not-found.tsx +5 -0
  11. package/copy-of-vitnode-app/root/src/app/[locale]/admin/page.tsx +5 -0
  12. package/copy-of-vitnode-app/root/src/app/[locale]/layout.tsx +35 -0
  13. package/copy-of-vitnode-app/root/src/app/api/[...route]/route.ts +17 -0
  14. package/copy-of-vitnode-app/root/src/app/global-error.tsx +27 -0
  15. package/copy-of-vitnode-app/root/src/app/globals.css +119 -0
  16. package/{templates/basic/apps/frontend → copy-of-vitnode-app/root}/src/app/layout.tsx +1 -1
  17. package/copy-of-vitnode-app/root/src/app/not-found.tsx +13 -0
  18. package/copy-of-vitnode-app/root/src/vitnode.api.config.ts +5 -0
  19. package/copy-of-vitnode-app/root/tsconfig.json +21 -0
  20. package/dist/src/create/create-vitnode.js +26 -0
  21. package/dist/src/helpers/get-available-package-managers.js +24 -0
  22. package/dist/src/helpers/get-package-json.js +2 -0
  23. package/dist/src/helpers/is-folder-empty.js +49 -0
  24. package/dist/src/helpers/is-writeable.js +11 -0
  25. package/dist/src/helpers/packages-json.js +1 -0
  26. package/dist/src/helpers/validate-pkg.js +14 -0
  27. package/dist/src/index.js +65 -0
  28. package/dist/src/plugin/index.js +18 -0
  29. package/dist/src/prepare/prepare.js +16 -0
  30. package/dist/src/questions.js +46 -0
  31. package/dist/src/validation.js +40 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -0
  33. package/package.json +15 -23
  34. package/README.md +0 -40
  35. package/dist/index.cjs +0 -49
  36. package/templates/basic/.env.template +0 -16
  37. package/templates/basic/.gitignore_template +0 -58
  38. package/templates/basic/README.md +0 -44
  39. package/templates/basic/apps/backend/drizzle.config.ts +0 -9
  40. package/templates/basic/apps/backend/nest-cli.json +0 -15
  41. package/templates/basic/apps/backend/src/app.module.ts +0 -24
  42. package/templates/basic/apps/backend/src/database/config.ts +0 -16
  43. package/templates/basic/apps/backend/src/database/database.module.ts +0 -17
  44. package/templates/basic/apps/backend/src/database/database.service.ts +0 -9
  45. package/templates/basic/apps/backend/src/main.ts +0 -13
  46. package/templates/basic/apps/backend/src/plugins/plugins.module.ts +0 -8
  47. package/templates/basic/apps/backend/src/plugins/welcome/admin/admin.module.ts +0 -4
  48. package/templates/basic/apps/backend/src/plugins/welcome/admin/database/index.ts +0 -1
  49. package/templates/basic/apps/backend/src/plugins/welcome/config.json +0 -12
  50. package/templates/basic/apps/backend/src/plugins/welcome/welcome.module.ts +0 -8
  51. package/templates/basic/apps/backend/tsconfig.build.json +0 -4
  52. package/templates/basic/apps/backend/tsconfig.json +0 -15
  53. package/templates/basic/apps/backend/uploads/index.html +0 -0
  54. package/templates/basic/apps/backend/uploads/private/index.html +0 -0
  55. package/templates/basic/apps/backend/uploads/public/index.html +0 -0
  56. package/templates/basic/apps/backend/uploads/temp/index.html +0 -0
  57. package/templates/basic/apps/frontend/global.d.ts +0 -11
  58. package/templates/basic/apps/frontend/next.config.ts +0 -6
  59. package/templates/basic/apps/frontend/public/sw.js +0 -3
  60. package/templates/basic/apps/frontend/src/app/[locale]/(main)/[...slug]/page.tsx +0 -10
  61. package/templates/basic/apps/frontend/src/app/[locale]/(main)/footer.tsx +0 -18
  62. package/templates/basic/apps/frontend/src/app/[locale]/(main)/layout.tsx +0 -12
  63. package/templates/basic/apps/frontend/src/app/[locale]/(main)/not-found.tsx +0 -5
  64. package/templates/basic/apps/frontend/src/app/[locale]/(main)/page.tsx +0 -9
  65. package/templates/basic/apps/frontend/src/app/[locale]/admin/(auth)/[...slug]/page.tsx +0 -12
  66. package/templates/basic/apps/frontend/src/app/[locale]/admin/(auth)/error.tsx +0 -9
  67. package/templates/basic/apps/frontend/src/app/[locale]/admin/(auth)/layout.tsx +0 -13
  68. package/templates/basic/apps/frontend/src/app/[locale]/admin/(auth)/not-found.tsx +0 -5
  69. package/templates/basic/apps/frontend/src/app/[locale]/admin/page.tsx +0 -5
  70. package/templates/basic/apps/frontend/src/app/[locale]/layout.tsx +0 -13
  71. package/templates/basic/apps/frontend/src/app/global.css +0 -94
  72. package/templates/basic/apps/frontend/src/app/not-found.tsx +0 -8
  73. package/templates/basic/apps/frontend/src/app/robots.ts +0 -9
  74. package/templates/basic/apps/frontend/src/app/sitemap.ts +0 -9
  75. package/templates/basic/apps/frontend/src/i18n.ts +0 -13
  76. package/templates/basic/apps/frontend/src/middleware.ts +0 -8
  77. package/templates/basic/apps/frontend/src/plugins/admin/langs/en.json +0 -710
  78. package/templates/basic/apps/frontend/src/plugins/core/langs/en.json +0 -408
  79. package/templates/basic/apps/frontend/src/plugins/welcome/langs/en.json +0 -15
  80. package/templates/basic/apps/frontend/src/plugins/welcome/templates/default-page.tsx +0 -40
  81. package/templates/basic/apps/frontend/tailwind.config.ts +0 -16
  82. package/templates/basic/apps/frontend/tsconfig.json +0 -33
  83. package/templates/basic/apps/shared/plugins/welcome/example.dto.ts +0 -0
  84. package/templates/basic/apps/shared/tsconfig.json +0 -15
  85. package/templates/basic/turbo.json +0 -34
  86. package/templates/docker/apps/backend/DockerFile +0 -31
  87. package/templates/docker/apps/frontend/DockerFile +0 -38
  88. package/templates/docker/deploy.sh +0 -213
  89. package/templates/docker/docker-compose-dev.yml +0 -35
  90. package/templates/docker/docker-compose.yml +0 -56
  91. package/templates/eslint/apps/backend/eslint.config.mjs +0 -4
  92. package/templates/eslint/apps/shared/eslint.config.mjs +0 -4
  93. package/templates/pnpm/pnpm-workspace.yaml +0 -2
  94. /package/{templates/basic/apps/frontend/public → copy-of-vitnode-app/root/src/app}/favicon.ico +0 -0
@@ -1,213 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Environment variables
4
- DOMAIN_MAIN_NAME="your_website.com"
5
- DOMAIN_FRONTEND_NAME="your_website.com"
6
- DOMAIN_BACKEND_NAME="backend.your_website.com"
7
- EMAIL="contact@your_website.com"
8
- DB_USER=$(openssl rand -base64 8) # Generate a random 8-character username
9
- DB_PASSWORD=$(openssl rand -base64 12) # Generate a random 12-character password
10
- DB_DATABASE="vitnode"
11
- LOGIN_TOKEN_SECRET=$(openssl rand -base64 32) # Generate a random 32-character secret
12
-
13
- # Other variables (do not change unless you know what you are doing)
14
- SWAP_SIZE="1G" # Swap size of 1GB
15
-
16
- # ================================
17
- # ================================
18
- # ================================
19
-
20
- # Update package list and upgrade existing packages
21
- sudo apt update && sudo apt upgrade -y
22
-
23
- # Add Swap Space
24
- if ! sudo swapon --show | grep -q '/swapfile'; then
25
- sudo fallocate -l $SWAP_SIZE /swapfile
26
- sudo chmod 600 /swapfile
27
- sudo mkswap /swapfile
28
- sudo swapon /swapfile
29
-
30
- # Make swap permanent
31
- echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
32
- else
33
- echo "Swap file already exists and is active."
34
- fi
35
-
36
- # ================================
37
- # Install Nginx
38
- sudo apt install nginx -y
39
-
40
- # Delete the default Nginx configuration file if it exists
41
- if [ -f /etc/nginx/sites-available/default ]; then
42
- sudo rm -f /etc/nginx/sites-available/default
43
- fi
44
-
45
- if [ -L /etc/nginx/sites-enabled/default ]; then
46
- sudo rm -f /etc/nginx/sites-enabled/default
47
- fi
48
-
49
- # Stop Nginx temporarily to allow Certbot to run in standalone mode
50
- sudo systemctl stop nginx
51
-
52
- # Obtain SSL certificate using Certbot standalone mode
53
- sudo apt install certbot -y
54
- sudo certbot certonly --standalone -d $DOMAIN_FRONTEND_NAME -d $DOMAIN_BACKEND_NAME --non-interactive --agree-tos -m contact@vitnode.com --cert-name $DOMAIN_MAIN_NAME
55
-
56
- # Ensure SSL files exist or generate them
57
- if [ ! -f /etc/letsencrypt/options-ssl-nginx.conf ]; then
58
- sudo wget https://raw.githubusercontent.com/certbot/certbot/main/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf -P /etc/letsencrypt/
59
- fi
60
-
61
- if [ ! -f /etc/letsencrypt/ssl-dhparams.pem ]; then
62
- sudo openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 2048
63
- fi
64
-
65
- # Create Nginx config with reverse proxy, SSL support, rate limiting, and streaming support for both frontend and backend
66
- sudo tee /etc/nginx/sites-available/vitnode > /dev/null <<EOL
67
- limit_req_zone \$binary_remote_addr zone=mylimit:10m rate=10r/s;
68
-
69
- # Frontend Server Block
70
- server {
71
- listen 80;
72
- server_name $DOMAIN_FRONTEND_NAME;
73
-
74
- # Redirect all HTTP requests to HTTPS
75
- return 301 https://\$host\$request_uri;
76
- }
77
-
78
- server {
79
- listen 443 ssl;
80
- server_name $DOMAIN_FRONTEND_NAME;
81
-
82
- ssl_certificate /etc/letsencrypt/live/$DOMAIN_MAIN_NAME/fullchain.pem;
83
- ssl_certificate_key /etc/letsencrypt/live/$DOMAIN_MAIN_NAME/privkey.pem;
84
- include /etc/letsencrypt/options-ssl-nginx.conf;
85
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
86
-
87
- # Enable rate limiting
88
- limit_req zone=mylimit burst=20 nodelay;
89
-
90
- location / {
91
- proxy_pass http://localhost:3000;
92
- proxy_http_version 1.1;
93
- proxy_set_header Upgrade \$http_upgrade;
94
- proxy_set_header Connection 'upgrade';
95
- proxy_set_header Host \$host;
96
- proxy_cache_bypass \$http_upgrade;
97
-
98
- # Disable buffering for streaming support
99
- proxy_buffering off;
100
- proxy_set_header X-Accel-Buffering no;
101
- }
102
- }
103
-
104
- # Backend Server Block
105
- server {
106
- listen 80;
107
- server_name $DOMAIN_BACKEND_NAME;
108
-
109
- # Redirect all HTTP requests to HTTPS
110
- return 301 https://\$host\$request_uri;
111
- }
112
-
113
- server {
114
- listen 443 ssl;
115
- server_name $DOMAIN_BACKEND_NAME;
116
-
117
- ssl_certificate /etc/letsencrypt/live/$DOMAIN_MAIN_NAME/fullchain.pem;
118
- ssl_certificate_key /etc/letsencrypt/live/$DOMAIN_MAIN_NAME/privkey.pem;
119
- include /etc/letsencrypt/options-ssl-nginx.conf;
120
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
121
-
122
- # Enable rate limiting
123
- limit_req zone=mylimit burst=20 nodelay;
124
-
125
- location / {
126
- proxy_pass http://localhost:8080;
127
- proxy_http_version 1.1;
128
- proxy_set_header Upgrade \$http_upgrade;
129
- proxy_set_header Connection 'upgrade';
130
- proxy_set_header Host \$host;
131
- proxy_cache_bypass \$http_upgrade;
132
-
133
- # Disable buffering for streaming support
134
- proxy_buffering off;
135
- proxy_set_header X-Accel-Buffering no;
136
- }
137
- }
138
- EOL
139
-
140
- # Create symbolic link if it doesn't already exist
141
- if [ ! -f /etc/nginx/sites-enabled/vitnode ]; then
142
- sudo ln -s /etc/nginx/sites-available/vitnode /etc/nginx/sites-enabled/vitnode
143
- fi
144
-
145
- # Restart Nginx to apply the new configuration
146
- sudo systemctl restart nginx
147
-
148
- # ================================
149
-
150
- # Add Docker's official GPG key:
151
- sudo apt-get update
152
- sudo apt-get install ca-certificates curl
153
- sudo install -m 0755 -d /etc/apt/keyrings
154
- sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
155
- sudo chmod a+r /etc/apt/keyrings/docker.asc
156
-
157
- # Add the repository to Apt sources:
158
- echo \
159
- "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
160
- $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
161
- sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
162
- sudo apt-get update
163
- sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
164
-
165
- # Install Docker Compose
166
- sudo rm -f /usr/local/bin/docker-compose
167
- sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
168
-
169
-
170
- # Wait for the file to be fully downloaded before proceeding
171
- if [ ! -f /usr/local/bin/docker-compose ]; then
172
- echo "Docker Compose download failed. Exiting."
173
- exit 1
174
- fi
175
-
176
- sudo chmod +x /usr/local/bin/docker-compose
177
-
178
- # Ensure Docker Compose is executable and in path
179
- sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
180
-
181
- # Verify Docker Compose installation
182
- docker-compose --version
183
- if [ $? -ne 0 ]; then
184
- echo "Docker Compose installation failed. Exiting."
185
- exit 1
186
- fi
187
-
188
- # Ensure Docker starts on boot and start Docker service
189
- sudo systemctl enable docker
190
- sudo systemctl start docker
191
-
192
- # Create a .env file
193
- if [ ! -f "./.env" ]; then
194
- echo "LOGIN_TOKEN_SECRET=$LOGIN_TOKEN_SECRET" > "./.env"
195
- echo "NEXT_PUBLIC_BACKEND_CLIENT_URL=https://$DOMAIN_BACKEND_NAME" >> "./.env"
196
- echo "NEXT_PUBLIC_FRONTEND_URL=https://$DOMAIN_FRONTEND_NAME" >> "./.env"
197
- echo "DB_USER=$DB_USER" >> "./.env"
198
- echo "DB_PASSWORD=$DB_PASSWORD" >> "./.env"
199
- echo "DB_DATABASE=$DB_DATABASE" >> "./.env"
200
- else
201
- echo ".env file already exists. Skipping creation."
202
- fi
203
-
204
- sudo docker-compose -f ./docker-compose.yml -p vitnode up --build -d
205
-
206
- sudo chown -R 1001:1001 ./apps/backend/src/plugins/core
207
- sudo chown -R 1001:1001 ./apps/backend/uploads
208
-
209
- # Check if Docker Compose started correctly
210
- if ! sudo docker-compose ps | grep "Up"; then
211
- echo "Docker containers failed to start. Check logs with 'docker-compose logs'."
212
- exit 1
213
- fi
@@ -1,35 +0,0 @@
1
- version: '3.8'
2
-
3
- services:
4
- database:
5
- container_name: vitnode_postgres_development
6
- image: postgres:16.3-alpine
7
- restart: unless-stopped
8
- environment:
9
- POSTGRES_USER: ${DB_USER-root}
10
- POSTGRES_PASSWORD: ${DB_PASSWORD-root}
11
- POSTGRES_DB: vitnode
12
- command: ['postgres', '-c', 'log_statement=all'] # log all sql queries
13
- volumes:
14
- - ./docker:/var/lib/postgresql/data
15
- ports:
16
- - '5432:5432'
17
- networks:
18
- - vitnode_dev
19
-
20
- pgadmin:
21
- container_name: vitnode_pgadmin_development
22
- image: dpage/pgadmin4:latest
23
- restart: unless-stopped
24
- environment:
25
- PGADMIN_DEFAULT_EMAIL: admin@admin.com
26
- PGADMIN_DEFAULT_PASSWORD: admin
27
- ports:
28
- - '5050:80'
29
- depends_on:
30
- - database
31
- networks:
32
- - vitnode_dev
33
-
34
- networks:
35
- vitnode_dev:
@@ -1,56 +0,0 @@
1
- version: '3.8'
2
-
3
- services:
4
- database:
5
- container_name: vitnode_database
6
- image: postgres:16.3-alpine
7
- restart: unless-stopped
8
- environment:
9
- POSTGRES_USER: ${DB_USER}
10
- POSTGRES_PASSWORD: ${DB_PASSWORD}
11
- POSTGRES_DB: ${DB_DATABASE:-vitnode}
12
- ports:
13
- - '${DB_PORT:-5432}:${DB_PORT:-5432}'
14
- volumes:
15
- - ./docker/prod/database:/var/lib/postgresql/data
16
- networks:
17
- - vitnode
18
- backend:
19
- container_name: vitnode_backend
20
- build:
21
- context: .
22
- dockerfile: ./apps/backend/DockerFile
23
- restart: unless-stopped
24
- depends_on:
25
- - database
26
- environment:
27
- DB_HOST: ${DB_HOST:-database}
28
- env_file:
29
- - .env
30
- command: sh -c "cd apps/backend && npm run config:init && node dist/main.js"
31
- ports:
32
- - '8080:8080'
33
- volumes:
34
- - ./apps/backend/uploads:/app/apps/backend/uploads # uploads
35
- - ./apps/backend/src/plugins/core:/app/apps/backend/src/plugins/core # core
36
- - ./apps/frontend/src/plugins/admin/langs:/app/apps/frontend/src/plugins/admin/langs # admin - langs
37
- - ./apps/frontend/src/plugins/core/langs:/app/apps/frontend/src/plugins/core/langs # core - langs
38
- networks:
39
- - vitnode
40
- frontend:
41
- container_name: vitnode_frontend
42
- build:
43
- context: .
44
- dockerfile: ./apps/frontend/DockerFile
45
- args:
46
- - NEXT_PUBLIC_BACKEND_URL=${NEXT_PUBLIC_BACKEND_URL:-http://backend:8080}
47
- - NEXT_PUBLIC_BACKEND_CLIENT_URL=${NEXT_PUBLIC_BACKEND_CLIENT_URL:-http://localhost:8080}
48
- - NEXT_PUBLIC_FRONTEND_URL=${NEXT_PUBLIC_FRONTEND_URL:-http://localhost:3000}
49
- restart: unless-stopped
50
- ports:
51
- - '3000:3000'
52
- networks:
53
- - vitnode
54
-
55
- networks:
56
- vitnode:
@@ -1,4 +0,0 @@
1
- // @ts-check
2
- import eslintVitNode from 'eslint-config-typescript-vitnode/eslint.shared.mjs';
3
-
4
- export default [...eslintVitNode];
@@ -1,4 +0,0 @@
1
- // @ts-check
2
- import eslintVitNode from 'eslint-config-typescript-vitnode/eslint.shared.mjs';
3
-
4
- export default [...eslintVitNode];
@@ -1,2 +0,0 @@
1
- packages:
2
- - 'apps/*'