devtunnel-cli 3.0.25 → 3.0.27
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 +24 -25
- package/package.json +1 -1
- package/src/core/proxy-server.js +14 -3
- package/src/core/start.js +41 -8
- package/src/utils/pages/index.html +73 -0
- package/src/utils/pages/WEBSITE-INFO.md +0 -182
package/README.md
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://github.com/maiz-an/DevTunnel)
|
|
7
7
|
[](https://www.npmjs.com/package/devtunnel-cli)
|
|
8
|
-
[](https://maiz-an.github.io/DevTunnel/)
|
|
9
8
|
|
|
10
|
-
🌐 **Website:** [devtunnel.vercel.app](https://devtunnel.vercel.app) | 📦 **npm:** [devtunnel-cli](https://www.npmjs.com/package/devtunnel-cli) | 💻 **GitHub
|
|
9
|
+
🌐 **Website:** [devtunnel.vercel.app](https://devtunnel.vercel.app) | 📦 **npm:** [devtunnel-cli](https://www.npmjs.com/package/devtunnel-cli) | 💻 **GitHub:** [maiz-an/DevTunnel](https://github.com/maiz-an/DevTunnel)
|
|
11
10
|
|
|
12
11
|
---
|
|
13
12
|
|
|
@@ -25,20 +24,21 @@ npm install -g devtunnel-cli
|
|
|
25
24
|
cd your-project
|
|
26
25
|
```
|
|
27
26
|
|
|
28
|
-
**3.
|
|
27
|
+
**3. Have your app running (in one terminal):**
|
|
29
28
|
```bash
|
|
30
|
-
npm start
|
|
31
|
-
# OR
|
|
32
29
|
npm run dev
|
|
30
|
+
# OR php artisan serve (Laravel)
|
|
31
|
+
# OR XAMPP / Live Server (PHP/HTML)
|
|
32
|
+
# HTML: optional — DevTunnel can start a built-in server
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
**4. Run DevTunnel (in another terminal, same directory):**
|
|
36
36
|
```bash
|
|
37
|
-
cd your-project # Same directory
|
|
38
|
-
devtunnel-cli
|
|
37
|
+
cd your-project # Same directory as your project
|
|
38
|
+
devtunnel-cli # Auto-detects project type and port!
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
**That's it!** DevTunnel
|
|
41
|
+
**That's it!** DevTunnel auto-detects Node, Laravel, HTML, and PHP/XAMPP projects.
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
@@ -48,7 +48,9 @@ devtunnel-cli # Auto-detects project and port!
|
|
|
48
48
|
- 🎯 **Zero Config** - No project changes needed
|
|
49
49
|
- 🔗 **Smart Proxy** - Bypasses Vite/React restrictions
|
|
50
50
|
- 🌍 **Cross-Platform** - Windows, macOS, Linux
|
|
51
|
-
- 🚀 **Any Framework** -
|
|
51
|
+
- 🚀 **Any Framework** - Node, React, Laravel, plain HTML, PHP/XAMPP
|
|
52
|
+
- 📄 **HTML** - Default port 5500; built-in static server if none running
|
|
53
|
+
- 🐘 **PHP/XAMPP** - Port 80; supports htdocs subfolders (e.g. http://localhost/YourProject/)
|
|
52
54
|
- 🔄 **Multi-Service** - Cloudflare, Ngrok, LocalTunnel fallback
|
|
53
55
|
- 📹 **Streaming Support** - Handles video/audio files (with limitations for large files)
|
|
54
56
|
|
|
@@ -56,37 +58,36 @@ devtunnel-cli # Auto-detects project and port!
|
|
|
56
58
|
|
|
57
59
|
## 💡 How to Use
|
|
58
60
|
|
|
59
|
-
**Important:** Run `devtunnel-cli` from the same directory
|
|
61
|
+
**Important:** Run `devtunnel-cli` from the same directory as your project!
|
|
60
62
|
|
|
61
63
|
1. **Install DevTunnel** (one-time): `npm install -g devtunnel-cli`
|
|
62
|
-
2. **Go to your project**: `cd your-project`
|
|
63
|
-
3. **
|
|
64
|
+
2. **Go to your project**: `cd your-project` (Node, Laravel, HTML, or XAMPP folder)
|
|
65
|
+
3. **Have your app running**: `npm run dev`, `php artisan serve`, or XAMPP. For HTML, optional — DevTunnel can serve it.
|
|
64
66
|
4. **Open a new terminal** in the same project directory
|
|
65
|
-
5. **Run DevTunnel**: `devtunnel-cli` (auto-detects
|
|
67
|
+
5. **Run DevTunnel**: `devtunnel-cli` (auto-detects project type and port!)
|
|
66
68
|
6. **Get your public URL** and share it! 🌍
|
|
67
69
|
|
|
68
|
-
**Example:**
|
|
70
|
+
**Example (Node):**
|
|
69
71
|
```bash
|
|
70
|
-
# Terminal 1
|
|
72
|
+
# Terminal 1
|
|
71
73
|
cd my-react-app
|
|
72
74
|
npm run dev
|
|
73
75
|
|
|
74
|
-
# Terminal 2 -
|
|
76
|
+
# Terminal 2 - same directory
|
|
75
77
|
cd my-react-app
|
|
76
78
|
devtunnel-cli
|
|
77
79
|
```
|
|
78
80
|
|
|
79
|
-
**Works with
|
|
81
|
+
**Works with:** Vite, React, Next.js, Express, NestJS, Laravel, plain HTML, PHP/XAMPP, and any HTTP/HTTPS server.
|
|
80
82
|
|
|
81
83
|
---
|
|
82
84
|
|
|
83
85
|
## 📖 Documentation
|
|
84
86
|
|
|
85
|
-
Complete docs in `/docs` folder:
|
|
86
|
-
- [Complete Guide](docs/README.md)
|
|
87
87
|
- [Features](docs/FEATURES.md)
|
|
88
88
|
- [Troubleshooting](docs/TROUBLESHOOTING.md)
|
|
89
|
-
- [
|
|
89
|
+
- [Contributing](docs/CONTRIBUTING.md)
|
|
90
|
+
- [License](docs/LICENSE)
|
|
90
91
|
|
|
91
92
|
---
|
|
92
93
|
|
|
@@ -118,9 +119,7 @@ MIT License - see [LICENSE](docs/LICENSE)
|
|
|
118
119
|
|
|
119
120
|
## 📦 Installation & Links
|
|
120
121
|
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
- **GitHub
|
|
124
|
-
- **Official Website**: [devtunnel.vercel.app](https://devtunnel.vercel.app)
|
|
125
|
-
- **Documentation**: [docs/README.md](docs/README.md)
|
|
122
|
+
- **Website**: [devtunnel.vercel.app](https://devtunnel.vercel.app)
|
|
123
|
+
- **npm**: [devtunnel-cli](https://www.npmjs.com/package/devtunnel-cli)
|
|
124
|
+
- **GitHub**: [maiz-an/DevTunnel](https://github.com/maiz-an/DevTunnel)
|
|
126
125
|
- **Issues**: [GitHub Issues](https://github.com/maiz-an/DevTunnel/issues)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devtunnel-cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.27",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "DevTunnel - Share local dev servers worldwide. Zero configuration tunnel for any framework. Install via npm: npm install -g devtunnel-cli. Works with Vite, React, Next.js, Express, NestJS, Laravel (PHP), HTML, and more.",
|
|
6
6
|
"main": "src/core/start.js",
|
package/src/core/proxy-server.js
CHANGED
|
@@ -8,13 +8,14 @@ process.emitWarning = function (warning, ...args) {
|
|
|
8
8
|
};
|
|
9
9
|
const { default: httpProxy } = await import("http-proxy");
|
|
10
10
|
|
|
11
|
-
// Get ports from command line
|
|
11
|
+
// Get ports and optional base path from command line
|
|
12
12
|
const TARGET_PORT = parseInt(process.argv[2]); // Your dev server port
|
|
13
13
|
const PROXY_PORT = parseInt(process.argv[3]); // Port for tunnel to connect to
|
|
14
14
|
const PROJECT_NAME = process.argv[4] || "Project";
|
|
15
|
+
const BASE_PATH = process.argv[5] || ""; // e.g. /PeopleQ for XAMPP htdocs/PeopleQ
|
|
15
16
|
|
|
16
17
|
if (!TARGET_PORT || !PROXY_PORT) {
|
|
17
|
-
console.error("Usage: node proxy-server.js <target-port> <proxy-port> [project-name]");
|
|
18
|
+
console.error("Usage: node proxy-server.js <target-port> <proxy-port> [project-name] [base-path]");
|
|
18
19
|
process.exit(1);
|
|
19
20
|
}
|
|
20
21
|
|
|
@@ -63,12 +64,22 @@ const server = http.createServer((req, res) => {
|
|
|
63
64
|
return;
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
// XAMPP subfolder: rewrite path so / → /PeopleQ/, /style.css → /PeopleQ/style.css
|
|
68
|
+
if (BASE_PATH) {
|
|
69
|
+
const prefix = BASE_PATH.replace(/\/$/, "");
|
|
70
|
+
req.url = prefix + (req.url === "/" ? "/" : req.url);
|
|
71
|
+
}
|
|
72
|
+
|
|
66
73
|
// Proxy the request
|
|
67
74
|
proxy.web(req, res);
|
|
68
75
|
});
|
|
69
76
|
|
|
70
77
|
// Handle WebSocket upgrade (for Vite HMR)
|
|
71
78
|
server.on("upgrade", (req, socket, head) => {
|
|
79
|
+
if (BASE_PATH) {
|
|
80
|
+
const prefix = BASE_PATH.replace(/\/$/, "");
|
|
81
|
+
req.url = prefix + (req.url === "/" ? "/" : req.url);
|
|
82
|
+
}
|
|
72
83
|
proxy.ws(req, socket, head);
|
|
73
84
|
});
|
|
74
85
|
|
|
@@ -78,7 +89,7 @@ server.listen(PROXY_PORT, () => {
|
|
|
78
89
|
console.log("DevTunnel Proxy Server");
|
|
79
90
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
80
91
|
console.log(`Project: ${PROJECT_NAME}`);
|
|
81
|
-
console.log(`Dev Server: http://localhost:${TARGET_PORT}`);
|
|
92
|
+
console.log(`Dev Server: http://localhost:${TARGET_PORT}${BASE_PATH || ""}`);
|
|
82
93
|
console.log(`Proxy Port: ${PROXY_PORT}`);
|
|
83
94
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
84
95
|
console.log("Ready! Tunnel will connect to proxy");
|
package/src/core/start.js
CHANGED
|
@@ -17,10 +17,10 @@ function getPackageVersion() {
|
|
|
17
17
|
const pkgPath = join(PROJECT_ROOT, "package.json");
|
|
18
18
|
if (existsSync(pkgPath)) {
|
|
19
19
|
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
20
|
-
return pkg.version || "3.0.
|
|
20
|
+
return pkg.version || "3.0.27";
|
|
21
21
|
}
|
|
22
22
|
} catch (err) {}
|
|
23
|
-
return "3.0.
|
|
23
|
+
return "3.0.27";
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
// Helper to run command
|
|
@@ -136,9 +136,17 @@ function detectHtmlProject(currentDir) {
|
|
|
136
136
|
return { name: basename(currentDir), defaultPort: 5500 }; // Live Server default; matches VS Code
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
// Detect PHP/XAMPP project (index.php in root, not Laravel)
|
|
140
|
+
function detectPhpProject(currentDir) {
|
|
141
|
+
if (detectLaravelProject(currentDir)) return null; // Laravel has its own flow
|
|
142
|
+
const indexPhp = join(currentDir, "index.php");
|
|
143
|
+
if (!existsSync(indexPhp)) return null;
|
|
144
|
+
return { name: basename(currentDir), defaultPort: 80 }; // XAMPP/Apache default
|
|
145
|
+
}
|
|
146
|
+
|
|
139
147
|
// Check common ports for running dev servers (includes Laravel 8000, XAMPP/Live Server 8080/5500)
|
|
140
148
|
async function detectRunningDevServer() {
|
|
141
|
-
const commonPorts = [3000, 5173, 5500, 8080, 8000, 5000, 4000, 3001, 5174]; //
|
|
149
|
+
const commonPorts = [3000, 5173, 5500, 8080, 8000, 80, 5000, 4000, 3001, 5174]; // 80 for XAMPP
|
|
142
150
|
const detected = [];
|
|
143
151
|
|
|
144
152
|
for (const port of commonPorts) {
|
|
@@ -218,6 +226,18 @@ async function autoDetectProject() {
|
|
|
218
226
|
};
|
|
219
227
|
}
|
|
220
228
|
|
|
229
|
+
// 4) PHP/XAMPP (index.php) — default port 80 (Apache), e.g. http://localhost/PeopleQ/
|
|
230
|
+
const php = detectPhpProject(currentDir);
|
|
231
|
+
if (php) {
|
|
232
|
+
const detectedPort = runningPorts.length > 0 ? runningPorts[0] : php.defaultPort;
|
|
233
|
+
return {
|
|
234
|
+
path: currentDir,
|
|
235
|
+
name: php.name,
|
|
236
|
+
port: detectedPort,
|
|
237
|
+
projectType: "php"
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
221
241
|
return null;
|
|
222
242
|
}
|
|
223
243
|
|
|
@@ -355,7 +375,9 @@ async function main() {
|
|
|
355
375
|
? "Laravel (php artisan serve)"
|
|
356
376
|
: autoDetected.projectType === "html"
|
|
357
377
|
? "HTML project"
|
|
358
|
-
:
|
|
378
|
+
: autoDetected.projectType === "php"
|
|
379
|
+
? "PHP/XAMPP"
|
|
380
|
+
: "package.json";
|
|
359
381
|
console.log(`Detected port ${autoDetected.port} (${portSource}), but no server running on that port`);
|
|
360
382
|
console.log("Checking for running dev servers...");
|
|
361
383
|
|
|
@@ -521,15 +543,18 @@ async function main() {
|
|
|
521
543
|
console.log(`Selected: ${projectPath}`);
|
|
522
544
|
console.log("");
|
|
523
545
|
|
|
524
|
-
// Try to detect port for selected project (Laravel → 8000, HTML →
|
|
546
|
+
// Try to detect port for selected project (Laravel → 8000, HTML → 5500, PHP → 80, Node from package.json)
|
|
525
547
|
const selectedPackagePath = join(projectPath, "package.json");
|
|
526
548
|
const laravelSelected = detectLaravelProject(projectPath);
|
|
527
549
|
const htmlSelected = detectHtmlProject(projectPath);
|
|
550
|
+
const phpSelected = detectPhpProject(projectPath);
|
|
528
551
|
let detectedPort = laravelSelected
|
|
529
552
|
? laravelSelected.defaultPort
|
|
530
553
|
: htmlSelected
|
|
531
554
|
? htmlSelected.defaultPort // 5500
|
|
532
|
-
:
|
|
555
|
+
: phpSelected
|
|
556
|
+
? phpSelected.defaultPort // 80
|
|
557
|
+
: detectPortFromPackage(selectedPackagePath);
|
|
533
558
|
|
|
534
559
|
// Check for running servers
|
|
535
560
|
const runningPorts = await detectRunningDevServer();
|
|
@@ -557,11 +582,17 @@ async function main() {
|
|
|
557
582
|
console.log("");
|
|
558
583
|
const proxyPort = devPort + 1000; // Use port 1000 higher for proxy
|
|
559
584
|
|
|
585
|
+
// XAMPP subfolder (e.g. htdocs/PeopleQ → http://localhost/PeopleQ/) — proxy rewrites path
|
|
586
|
+
const isPhpXamppSubfolder =
|
|
587
|
+
devPort === 80 &&
|
|
588
|
+
(projectPath.toLowerCase().includes("htdocs") || projectPath.toLowerCase().includes("www"));
|
|
589
|
+
const basePath = isPhpXamppSubfolder ? "/" + basename(projectPath) : "";
|
|
590
|
+
|
|
560
591
|
console.log("");
|
|
561
592
|
console.log("Configuration:");
|
|
562
593
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
563
594
|
console.log(`Project: ${projectName}`);
|
|
564
|
-
console.log(`Dev Server: localhost:${devPort}`);
|
|
595
|
+
console.log(`Dev Server: localhost:${devPort}${basePath || ""}`);
|
|
565
596
|
console.log(`Proxy Port: ${proxyPort}`);
|
|
566
597
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
567
598
|
console.log("");
|
|
@@ -593,7 +624,9 @@ async function main() {
|
|
|
593
624
|
console.log("Starting services...");
|
|
594
625
|
console.log("");
|
|
595
626
|
const proxyPath = join(__dirname, "proxy-server.js");
|
|
596
|
-
const
|
|
627
|
+
const proxyArgs = [proxyPath, devPort.toString(), proxyPort.toString(), projectName];
|
|
628
|
+
if (basePath) proxyArgs.push(basePath);
|
|
629
|
+
const proxyProcess = spawn("node", proxyArgs, {
|
|
597
630
|
stdio: "inherit",
|
|
598
631
|
shell: false
|
|
599
632
|
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<meta name="description" content="DevTunnel - Share local dev servers worldwide. Zero configuration tunnel for any framework. Install via npm: npm install -g devtunnel-cli">
|
|
7
|
+
<meta name="keywords" content="dev tunnel, localhost tunnel, cloudflare, ngrok, port forwarding, local development, vite, react, nextjs, laravel, php, html, npm install, devtunnel">
|
|
8
|
+
<meta name="author" content="maiz">
|
|
9
|
+
<meta name="robots" content="index, follow">
|
|
10
|
+
<link rel="canonical" href="https://devtunnel.vercel.app/">
|
|
11
|
+
<meta property="og:title" content="DevTunnel - Share Local Servers Worldwide">
|
|
12
|
+
<meta property="og:description" content="Zero configuration tunnel for any framework. Install via npm: npm install -g devtunnel-cli">
|
|
13
|
+
<meta property="og:url" content="https://devtunnel.vercel.app/">
|
|
14
|
+
<meta property="og:type" content="website">
|
|
15
|
+
<meta property="og:image" content="https://devtunnel.vercel.app/og-image.png">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="DevTunnel - Share Local Servers Worldwide">
|
|
18
|
+
<meta name="twitter:description" content="Zero configuration tunnel for any framework">
|
|
19
|
+
<meta name="twitter:image" content="https://devtunnel.vercel.app/og-image.png">
|
|
20
|
+
<title>DevTunnel - Share Local Servers Worldwide</title>
|
|
21
|
+
<style>
|
|
22
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.6; }
|
|
23
|
+
h1 { color: #3b82f6; }
|
|
24
|
+
.badge { display: inline-block; padding: 4px 8px; background: #3b82f6; color: white; border-radius: 4px; margin: 5px; text-decoration: none; }
|
|
25
|
+
.links { margin: 20px 0; }
|
|
26
|
+
.links a { margin-right: 15px; color: #3b82f6; text-decoration: none; }
|
|
27
|
+
code { background: #f4f4f4; padding: 2px 6px; border-radius: 3px; }
|
|
28
|
+
pre { background: #1e293b; color: #f1f5f9; padding: 15px; border-radius: 5px; overflow-x: auto; }
|
|
29
|
+
</style>
|
|
30
|
+
</head>
|
|
31
|
+
<body>
|
|
32
|
+
<h1>🚀 DevTunnel</h1>
|
|
33
|
+
<p><strong>Share your local dev servers worldwide - Zero config tunnel for any framework</strong></p>
|
|
34
|
+
|
|
35
|
+
<div class="links">
|
|
36
|
+
<a href="https://www.npmjs.com/package/devtunnel-cli" class="badge">📦 npm Package</a>
|
|
37
|
+
<a href="https://devtunnel.vercel.app" class="badge">🌐 Website</a>
|
|
38
|
+
<a href="https://github.com/maiz-an/DevTunnel" class="badge">💻 GitHub</a>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<h2>⚡ Quick Start</h2>
|
|
42
|
+
<h3>Install via npm (Recommended)</h3>
|
|
43
|
+
<pre><code>npm install -g devtunnel-cli
|
|
44
|
+
devtunnel-cli</code></pre>
|
|
45
|
+
|
|
46
|
+
<h2>✨ Features</h2>
|
|
47
|
+
<ul>
|
|
48
|
+
<li>🤖 Fully Automatic - Cloudflare bundled, no installation needed</li>
|
|
49
|
+
<li>🎯 Zero Config - No project changes needed</li>
|
|
50
|
+
<li>🔗 Smart Proxy - Bypasses Vite/React restrictions</li>
|
|
51
|
+
<li>🌍 Cross-Platform - Windows, macOS, Linux</li>
|
|
52
|
+
<li>🚀 Any Framework - Works with all</li>
|
|
53
|
+
<li>🔄 Multi-Service - Cloudflare, Ngrok, LocalTunnel fallback</li>
|
|
54
|
+
<li>🍃 Laravel (PHP) - Auto port 8000, XAMPP/htdocs base path</li>
|
|
55
|
+
<li>📄 HTML - Default port 5500 (Live Server), built-in static server</li>
|
|
56
|
+
<li>🐘 PHP/XAMPP - Port 80, http://localhost/ProjectName/</li>
|
|
57
|
+
</ul>
|
|
58
|
+
|
|
59
|
+
<h2>📖 Documentation</h2>
|
|
60
|
+
<p>Complete documentation in the <a href="https://github.com/maiz-an/DevTunnel/tree/main/docs">docs/</a> folder.</p>
|
|
61
|
+
|
|
62
|
+
<h2>🔗 Links</h2>
|
|
63
|
+
<ul>
|
|
64
|
+
<li><a href="https://www.npmjs.com/package/devtunnel-cli">npm Package (devtunnel-cli)</a></li>
|
|
65
|
+
<li><a href="https://devtunnel.vercel.app">Official Website</a></li>
|
|
66
|
+
<li><a href="https://github.com/maiz-an/DevTunnel">GitHub Repository</a></li>
|
|
67
|
+
<li><a href="https://github.com/maiz-an/DevTunnel/issues">Report Issues</a></li>
|
|
68
|
+
</ul>
|
|
69
|
+
|
|
70
|
+
<hr>
|
|
71
|
+
<p><small>Version 3.0.27 | Made with ❤️ for developers worldwide</small></p>
|
|
72
|
+
</body>
|
|
73
|
+
</html>
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
# 🌐 DevTunnel Website Information
|
|
2
|
-
|
|
3
|
-
## 📍 Public Website Repository
|
|
4
|
-
|
|
5
|
-
**GitHub:** https://github.com/maiz-an/DevTunnelPages
|
|
6
|
-
|
|
7
|
-
**Live URL:** https://devtunnel.vercel.app ✅ LIVE
|
|
8
|
-
|
|
9
|
-
**Deployment Date:** January 28, 2026
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 🏗️ Architecture
|
|
14
|
-
|
|
15
|
-
### **This Folder (`src/utils/pages/`):**
|
|
16
|
-
- Contains original HTML/CSS/JS prototype
|
|
17
|
-
- **Private** (in `.gitignore`)
|
|
18
|
-
- For internal reference only
|
|
19
|
-
- Not published to GitHub
|
|
20
|
-
|
|
21
|
-
### **Public Repository (`DevTunnelPages`):**
|
|
22
|
-
- Next.js 15 + TypeScript version
|
|
23
|
-
- Tailwind CSS styling
|
|
24
|
-
- Vercel-optimized
|
|
25
|
-
- **Public** on GitHub
|
|
26
|
-
- Production-ready
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 📁 Files in This Folder
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
src/utils/pages/
|
|
34
|
-
├── index.html ← Original HTML landing page
|
|
35
|
-
├── styles.css ← Original custom CSS
|
|
36
|
-
├── script.js ← Original JavaScript
|
|
37
|
-
├── README.md ← Hosting instructions (HTML version)
|
|
38
|
-
├── PREVIEW.bat ← Windows preview launcher
|
|
39
|
-
└── WEBSITE-INFO.md ← This file (website details)
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 🚀 Deployment Process
|
|
45
|
-
|
|
46
|
-
1. **Prototype Created:** HTML/CSS/JS version here (private)
|
|
47
|
-
2. **Converted to Next.js:** Created DevTunnelPages repo
|
|
48
|
-
3. **Deployed to Vercel:** https://vercel.com/new
|
|
49
|
-
4. **Auto-Deploy:** Every push to main → automatic rebuild
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 🔄 Update Process
|
|
54
|
-
|
|
55
|
-
**To Update the Website:**
|
|
56
|
-
|
|
57
|
-
1. Clone DevTunnelPages:
|
|
58
|
-
```bash
|
|
59
|
-
cd G:\GitHubRep
|
|
60
|
-
cd DevTunnelPages
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
2. Edit files:
|
|
64
|
-
```
|
|
65
|
-
app/page.tsx ← Main content
|
|
66
|
-
app/globals.css ← Styles
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
3. Test locally:
|
|
70
|
-
```bash
|
|
71
|
-
npm install
|
|
72
|
-
npm run dev
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
4. Push changes:
|
|
76
|
-
```bash
|
|
77
|
-
git add .
|
|
78
|
-
git commit -m "Update website"
|
|
79
|
-
git push
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
5. Vercel auto-deploys in 2-3 minutes ✅
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 📊 Tech Stack Comparison
|
|
87
|
-
|
|
88
|
-
| Aspect | This Folder (Private) | DevTunnelPages (Public) |
|
|
89
|
-
|--------|----------------------|------------------------|
|
|
90
|
-
| **Format** | HTML/CSS/JS | Next.js 15 + TypeScript |
|
|
91
|
-
| **Styling** | Custom CSS | Tailwind CSS |
|
|
92
|
-
| **Purpose** | Prototype/Reference | Production Website |
|
|
93
|
-
| **Hosting** | Not hosted | Vercel |
|
|
94
|
-
| **Git** | Ignored (private) | Public repo |
|
|
95
|
-
| **Updates** | Manual edit | Git push → auto-deploy |
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## 🔗 Important Links
|
|
100
|
-
|
|
101
|
-
- **Public Repo:** https://github.com/maiz-an/DevTunnelPages
|
|
102
|
-
- **Vercel Deploy:** https://vercel.com/new
|
|
103
|
-
- **Main DevTunnel:** https://github.com/maiz-an/DevTunnel
|
|
104
|
-
- **Deployment Guide:** See DevTunnelPages/DEPLOY.md
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## 🔐 Privacy Note
|
|
109
|
-
|
|
110
|
-
This folder (`src/utils/pages/`) is in `.gitignore` and will NOT be pushed to GitHub.
|
|
111
|
-
Only visible in local repository for development reference.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## 💡 Quick Reference
|
|
116
|
-
|
|
117
|
-
**Deploy Command (from DevTunnelPages):**
|
|
118
|
-
```bash
|
|
119
|
-
git push # Vercel auto-deploys
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
**Local Preview (from DevTunnelPages):**
|
|
123
|
-
```bash
|
|
124
|
-
npm run dev # http://localhost:3000
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Production Build (from DevTunnelPages):**
|
|
128
|
-
```bash
|
|
129
|
-
npm run build
|
|
130
|
-
npm start
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
**Last Updated:** January 28, 2026
|
|
136
|
-
**Status:** ✅ LIVE at https://devtunnel.vercel.app
|
|
137
|
-
|
|
138
|
-
**Latest Changes (Jan 28, 2026):**
|
|
139
|
-
- ✅ Updated to Next.js 15 (latest version)
|
|
140
|
-
- ✅ Added favicons (all sizes)
|
|
141
|
-
- ✅ Updated npm install command to `devtunnel-cli`
|
|
142
|
-
- ✅ Updated terminal demo to show `devtunnel` command
|
|
143
|
-
- ✅ Added SEO metadata (OpenGraph, Twitter, Google Search Console)
|
|
144
|
-
- ✅ Added sitemap.xml and robots.txt
|
|
145
|
-
- ✅ Added npm link to navigation bar
|
|
146
|
-
- ✅ Removed developer name from metadata
|
|
147
|
-
- ✅ Added Google Search Console verification
|
|
148
|
-
- ✅ Added structured data (JSON-LD) for SEO
|
|
149
|
-
- ✅ Updated version to 3.0.10
|
|
150
|
-
- ✅ Added auto-detection feature documentation
|
|
151
|
-
- ✅ Added streaming support documentation
|
|
152
|
-
- ✅ Improved features list with auto-detection
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 🎉 Deployment Details
|
|
157
|
-
|
|
158
|
-
**Live Website:** https://devtunnel.vercel.app
|
|
159
|
-
|
|
160
|
-
**Build Stats:**
|
|
161
|
-
- Build Time: ~32 seconds
|
|
162
|
-
- Next.js Version: 15.1.6 (latest)
|
|
163
|
-
- Total Pages: 4
|
|
164
|
-
- First Load JS: 105 kB
|
|
165
|
-
- Status: ✅ Successfully deployed
|
|
166
|
-
- npm Package: `devtunnel-cli@3.0.10` (published and live)
|
|
167
|
-
- Latest Features: Auto-detection, streaming support, improved port detection
|
|
168
|
-
|
|
169
|
-
**Vercel Project:** devtunnel
|
|
170
|
-
|
|
171
|
-
**Auto-Deploy:** ✅ Every push to main branch auto-deploys in ~30 seconds
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## 🔗 All Links
|
|
176
|
-
|
|
177
|
-
| Purpose | URL |
|
|
178
|
-
|---------|-----|
|
|
179
|
-
| **Live Website** | https://devtunnel.vercel.app |
|
|
180
|
-
| **Website Repo** | https://github.com/maiz-an/DevTunnelPages |
|
|
181
|
-
| **Main DevTunnel** | https://github.com/maiz-an/DevTunnel |
|
|
182
|
-
| **Vercel Dashboard** | https://vercel.com/dashboard |
|